这可能与 this question 重复但答案并没有解决我的问题......
我想为项目使用由 C++ header 、库 (.lib) 和 dll 提供的第三方软件。因为它将在 BeagleBone 上运行,所以我正在为 Linux 编写这个项目。是否有任何正确的方法来链接 Linux 应用程序的 dll?
最佳答案
极不可能工作:
Windows 对可执行文件使用不同的文件格式(DLL 本质上是可执行文件——Linux 中的共享库也是如此)。这意味着重定位信息和符号链接(symbolic link)是不同的。
即使您设法加载和重新定位 DLL,您也很可能需要许多其他 DLL(例如编译器运行时和系统运行时 [例如 kernel32.dll])才能实际运行该应用程序。当然,这些依赖文件需要有一个正确的接口(interface)才能在 Linux 上工作(参见 #3)
没有什么可以阻止 Windows DLL 直接在共享库中进行系统调用 - 这些在 Linux 中不起作用。
您最好的选择是:
- 向这些库的供应商索取 Linux 版本。根据功能的不同,供应商为不同的架构生产替代品可能是也可能不是一件容易的事。
- 在 WINE(WINdows 模拟器)包内运行应用程序。
- 运行 Windows 虚拟机,并在其中运行应用程序。
- 编写您自己的替换库,或寻找其他可用的库。
关于c++ - 在 linux 中使用为 windows 编写的软件库(使用 dll),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40613722/