用C++为java构建一个dll,它正在调用另一个dll(Eclipse上的JNI)
Build a dll in C++ for java which is calling another dll (JNI on Eclipse)
我实际上正在处理一个在Eclipse上使用JNI的项目。
实际上,我在C++部分构建了一个dll,并在Java部分使用它。
但是,现在我需要在C++部分调用一个dll(因为我需要使用现有的项目),并使用C++部分中的函数,然后构建dll以在Java中使用它。所以我需要创建一个dll,它正在调用另一个dll。
我该怎么做?
提前谢谢!
要构建dll,在创建最终二进制文件时,编译器将使用-shared
选项。为了使用该dll中的其他现有dll,最简单的选择是静态创建链接(不要与链接到静态库混淆,在运行时仍将动态使用其他dll本身)。如果要执行此操作,可以使用-l
(可能还有-L
)开关指定有问题的dll。
例如,假设您的dll是由源文件my_dll.cpp
生成的my_dll.dll
,并使用一个名为other_dll.dll
的外部dll,那么您可能会有以下内容:
g++ -c my_dll.cpp
g++ -shared -o my_dll.dll my_dll.o -lother_dll -L/path/to/other/dll
在您的代码(my_dll.cpp
)中,您将包括other_dll.dll
供应商提供的头文件,以便访问其导出的函数,并仅从代码中正常调用它们(就像头文件中包含的函数和您自己项目的其他cpp
文件中定义的函数一样)。other_dll.dll
中定义的任何类的使用也是如此:只需包含声明它们的头,并正常使用它们(及其成员函数)。
此链接描述如何使用MingGW编写示例库。
相关文章:
- 如何链接 DLL 以供 LoadLibrary() 使用(在 Windows 上的 C++ 中)并从调用 exe 导入变
- sf::Windows上的音乐:api-ms-win-crt-locale-l1-1-0.dll:无法打开共享对象文件
- jvm.dll 上的加载库失败,错误代码为 183
- 为什么我不能在未链接的 DLL 上调用方法,但可以这样做?C++
- 从 Android 上的 Unity 中的 C++ DLL 访问 StreamingAssets 资源
- LNK2019某些类函数,但不在其他类函数(DLL 中的模板类)上
- 将字符串[]从C#发送到SafeArrayAccessData()上的C++ Dll 'E_UNEXPECTEDCatastrophic Error'
- 如何在另一个 DLL 上使用 '/DELAYLOAD' 的 DLL
- 通过dll在x64上的内联装配
- 使用cmake and vs在Windows上的现有代码中生成DLL
- Windows DLL 上的静态链接 libgcc
- Windows 8上的.exe文件中的MSVCR90.dll错误 - 应用程序无法正确启动(0xc000007b)
- 来自 C# 的 gcc DLL:Windows 10 上的"DLL initialization routine failed"
- gdal201.dll在Visual Studio 2012上的计算机错误中缺少
- 用C++为java构建一个dll,它正在调用另一个dll(Eclipse上的JNI)
- NTDLL.dll上未处理的异常
- C++在外部dll上的dilogex控件上创建hdc
- DLL 项目上的 VC++ 编译错误
- 喜欢 VS2013 的 Win32 dll 上的库的麻烦
- 无法锁定DLL上的c++ 11 std::互斥锁