使用在linux中为windows(使用dll)编写的软件库

时间:2016-11-15 15:30:26

标签: c++ linux dll

这可能与this question重复,但答案并非解决我的问题......

我想使用c ++标头,库(.lib)和dll为项目提供的第三方软件。因为它将在BeagleBone上运行,所以我正在为Linux编写这个项目。有没有正确的方法来链接Linux应用程序的dll?

1 个答案:

答案 0 :(得分:2)

极不可能工作:

  1. Windows对可执行文件使用不同的文件格式(DLL本质上是可执行文件 - 对于Linux中的共享库也是如此)。这意味着重定位信息和符号链接是不同的。

  2. 即使您设法加载并重新定位DLL,您也很可能需要许多其他DLL(例如编译器运行时和系统运行时[kernel32.dll])来实际运行该应用程序。当然,这些依赖文件需要有一个正确的接口才能在Linux上运行(参见#3)

  3. 没有什么可以阻止Windows DLL直接在共享库中进行系统调用 - 这些在Linux中无效。

  4. 您最好的选择是:

    1. 从这些库的供应商处请求Linux版本。根据功能的不同,供应商为不同的架构生产替代品可能是也可能不是一件容易的事。
    2. 在WINE(WINdows Emulator)包中运行应用程序。
    3. 运行Windows虚拟机,然后在其中运行该应用程序。
    4. 编写您自己的替换库,或找到其他已有的库。