英文:
Send data from Java to C++ Graalvm
问题
我正在使用GraalVM在Java和C++中进行多语言编码。我有以下代码在Java中调用C++来打印消息:
printMessage.cpp C++ 代码:
#include <iostream>
int imprimemensaje(std::string s);
int main() {
int imprimemensaje(std::string s);
std::cout << "Hello, C++ World!" << std::endl;
int a = imprimemensaje("Hola mundo c++");
}
int imprimemensaje(std::string s){
std::cout << "Mensaje desde c++ : " << s << std::endl;
return 0;
}
以及在Java中使用execute()执行C++对象的代码:
File file = new File("printMessage");
Source source = Source.newBuilder("llvm", file).build();
Value cpart = context.eval(source);
cpart.execute();
并在屏幕上打印出:
Hello, C++ World!
Mensaje desde c++ : Hola mundo c++
我只需要调用 imprimemensaje() 函数从Java中发送数据。我尝试过使用 cpart.getMember("IDmember") 方法,但它返回了一个空值,另外 cpart.getMemberKeys() 也没有任何项。
是否有人知道为什么会出现这种情况,或者是否有其他方法可以通过Java向C++对象发送数据?谢谢。
英文:
I'm working with GraalVM coding in Java and C++ as polyglot code. I have this code to print in C++ with Java:
printMessage.cpp C++ code:
#include <iostream>
int imprimemensaje(std::string s);
int main() {
int imprimemensaje(std::string s);
std::cout << "Hello, C++ World!" << std::endl;
int a = imprimemensaje("Hola mundo c++");
}
int imprimemensaje(std::string s){
std::cout << "Mensaje desde c++ : " << s << std::endl;
return 0;
}
and this code in Java to execute C++ object using execute():
File file = new File("printMessage");
Source source = Source.newBuilder("llvm", file).build();
Value cpart = context.eval(source);
cpart.execute();
And print on screen this:
Hello, C++ World!
Mensaje desde c++ : Hola mundo c++
I need to call only imprimemensaje() function to send data from Java, I tried with cpart.getMember("IDmember") method, but it retrieves me a null value, also cpart.getMemberKeys() has no items on it.
Does anyone know why this happened or is there another way to send data to c++ object through Java? Thanks.
专注分享java语言的经验与见解,让所有开发者获益!
评论