2010-09-10 36 views
5

Tôi đang cố gắng tạo một DLL gọi Qt (hiện tại tôi không thể sử dụng Jambi cho chức năng tôi cần). Tôi có một phương pháp Java đơn giản:Xây dựng một JNI DLL bằng MINGW

public final native int createChild(int handle); 

Tôi đã tạo dự án C trong Visual Studio Express 2010 và có thể xây dựng DLL.

Sau đó, tôi đã tạo một dự án trong trình tạo Qt và di chuyển các nguồn của tôi ở đó. Tôi đã cố gắng định cấu hình bản dựng theo kiến ​​thức tốt nhất của mình nhưng tất cả những gì tôi nhận được là:

java.lang.UnsatisfiedLinkError: tools.proofofconcept.control.EmbedderComposite.createChild(I)I 

Tôi đoán biểu tượng đó không được xuất ra đúng từ DLL. Tôi thêm -D_JNI_IMPLEMENTATION_ mối liên kết arg:

g++ -D_JNI_IMPLEMENTATION_ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -shared -mthreads -Wl -Wl,--out-implib,debug\libqt_integration.a -o debug\qt_integration.dll debug/dllmain.o debug/nativecode.o debug/qmfcapp.o debug/qwinwidget.o debug/moc_qwinwidget.o -L"c:\Qt\2010.05-rc1\qt\lib" -lQtGuid4 -lQtCored4 

Trả lời

6

tôi nên đã thêm sau đối số:

-Wl,--kill-at 

Nó sẽ thay đổi định dạng ký tự xuất khẩu.

2

Nếu bạn đang sử dụng Qt, hãy đảm bảo cấu hình nào được sử dụng. Theo mặc định cấu hình "mặc định" được sử dụng (thư mục "mkspecs/default") và cho win32 điều này gây ra "UnsatisfiedLinkError".

Các vấn đề liên quan