google / jni-bind

JNI Bind is a set of advanced syntactic sugar for writing efficient correct JNI Code in C++17 (and up).
Apache License 2.0
245 stars 29 forks source link

Getting compilation errors when using modules #215

Open ghost opened 10 months ago

ghost commented 10 months ago

Hi!

I am getting the following compilation error when using certain part of your package inside a module;

Relevant Code: selenium_bindings.h++

module;

#include <string>

#include <jni.h>
#include <jni_bind.h>

using namespace std;
using namespace jni;

export module selenium_bindings;

export constexpr Class FirefoxDriver {
    "org/openqa/selenium/firefox/FirefoxDriver",
    Constructor()
 };

export class NPC {
private:
    LocalObject<FirefoxDriver> ffxDriver;

public:
    NPC() {
    }

    virtual ~NPC() {
    }
};

main.cc

// inside main
NPC npc("", "");

getting the following error:

/nix/store/9ysy4d521yfhg7x81fkw0vq2kaqcyix5-jnibind-0.9.8/include/jni_bind.h:2377:25: error: 'jni::metaprogramming::StringAsType::static_chars' from module 'selenium_bindings.<global>' is not present in definition of 'StringAsType<chars...>' provided earlier
  static constexpr char static_chars[] = {chars..., 0};
                        ^
/nix/store/9ysy4d521yfhg7x81fkw0vq2kaqcyix5-jnibind-0.9.8/include/jni_bind.h:2377:25: note: declaration of 'static_chars' does not match
  static constexpr char static_chars[] = {chars..., 0};
                        ^
1 error generated.

using:

clang version 16.0.6
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /nix/store/dl48w741h1pbpyzyd4aaq18pr2hvv00y-clang-16.0.6/bin
jwhpryor commented 10 months ago

Thanks for the bug report! Is this new with 0.9.8 or was this your first time trying it and it failed?

ghost commented 10 months ago

First time trying it out.

jwhpryor commented 8 months ago

Sorry for the lack of update. I want to clear out some outstanding issues for a 1.0 release first, however, I did notice that modules support seems to be an active discussion here;

https://github.com/bazelbuild/bazel/pull/19940

I tried briefly to play with this myself but frustratingly I couldn't get them to work with Bazel.