gpt4 book ai didi

java - 使用 SWIG 将 c++ 包装到 java UnsatisfiedLinkError : HeaderJNI. new_Test()J

转载 作者:行者123 更新时间:2023-11-28 05:20:50 34 4
gpt4 key购买 nike

我一直在尝试在我的项目中使用 SWIG。看来我错过了什么。请帮忙。到目前为止,我根据本教程所做的工作: http://web.mit.edu/svn/src/swig-1.3.25/Examples/java/class/index.html是:

1.使用 Visual Studio 创建一个 header Header.h

class Test {
public:
Test();
~Test();
void showNumber();
private:
int number;
};

2.创建swig接口(interface)

/* File : Header.i */
%module Header

%{
#include "Header.h"
%}

/* Let's just grab the original header file here */
%include "Header.h"

3.在CMD中运行:

swig -c++ -java Header.i

4.创建SwigTest3.cpp

#include "Header.h"
#include <iostream>
Test::Test() {
number = 12;
}
Test::~Test() {
}
void Test::showNumber() {
std::cout << "Number: " << number << std::endl;
}

5.使用 Visual Studio 从 cpp 和 h 文件创建 64 个 dll

6.创建Java main.java类

public class main{
static{
try {
System.load("E:\\C++ projects\\SwigTest3\\SwigTest3\\SwigTest3.dll");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
System.exit(1);
}

}
public static void main(String argv[]){
System.out.println("Hello");
Test te = new Test();
}
}

7.运行 main.java 给我

Hello
Exception in thread "main" java.lang.UnsatisfiedLinkError: HeaderJNI.new_Test()J
at HeaderJNI.new_Test(Native Method)
at Test.<init>(Test.java:38)
at main.main(main.java:13)

所有文件都在同一个文件夹中。请告诉我我做错了什么。

最佳答案

在第 3 步中,swig 创建一个 *_wrap.cxx 文件。

在第 5 步中,您只编译 .cpp 文件,而不是生成的 .cxx 文件。

关于java - 使用 SWIG 将 c++ 包装到 java UnsatisfiedLinkError : HeaderJNI. new_Test()J,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534469/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com