【问题标题】:Using libs/dlls compiled in Linux/MinGW in Visual Studio在 Visual Studio 中使用在 Linux/MinGW 中编译的 libs/dlls
【发布时间】:2010-11-20 11:12:17
【问题描述】:

更新:编译时收到此警告:发现多个具有不同属性的“.text”部分

嗨,

我使用 MinGW 交叉编译器在 Linux 中编译了一些库(.a 和 .dll)。我可以在 Visual Studio 2008 中成功链接它们 (.a)。但是,当它运行时(使用 .dll),它会以指向空内存地址的地址指针终止。

有没有一种方法/清单可以让我在 VC08 中成功使用这些库?

交叉编译器生成

  1. *.dll.a
  2. *.dll

谢谢

【问题讨论】:

    标签: c++ visual-c++ gcc mingw cross-compiling


    【解决方案1】:

    找到了。

    http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

    你必须有一个def文件并使用VC的lib工具生成一个导入库。

    【讨论】:

      【解决方案2】:

      在我看来,双方没有使用相同的调用约定,这意味着导出的 dll 函数的定义方式存在问题。

      到目前为止,最简单的方法是将函数定义为 extern "C",方法是如下定义导出的函数:

      extern "C"
      {
        int  MyExportedFunction(char *buffer, int length);
        void MyOtherFunction();
      };
      

      【讨论】:

      • 我在标题导入中有 extern "C"。
      • 我刚刚注意到。编译时发现多个具有不同属性的“.text”部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      相关资源
      最近更新 更多