【发布时间】:2021-06-14 21:48:26
【问题描述】:
我已经用 Visual Studio 制作了一个 c++ dll,我成功地将它与 Visual Studio 一起使用,但我找不到如何仅使用 vscode 或更一般地仅使用命令行来使用它。我的目标是将我的库放在 github 上,并附上解释如何使用它的文档,但我无法在命令行中编译程序。
我尝试使用此命令:
g++ src/SummerFlow_Client.cpp -o bin/prog -I include -L lib -lmingw32 -lSummerFlow
包含“include”文件夹中包含代码的所有文件、“lib”文件夹中的 .lib 文件和“bin”文件夹中的我的 .dll 文件。
这返回了这个错误:
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible lib/SummerFlow.lib when searching for -lSummerFlow
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible lib/SummerFlow.lib when searching for -lSummerFlow
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible lib\SummerFlow.lib when searching for -lSummerFlow
C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSummerFlow
collect2.exe: error: ld returned 1 exit status
【问题讨论】:
-
你打算把二进制放在github上,还是放在源码上?
-
请正确格式化您的帖子,因为它很难阅读。
-
由于您使用的是 MingW,因此您也对它有依赖关系,因此您必须将 MingW 库也放入您的搜索路径中。如果这些也是 DLL,您也必须将它们捆绑在一起,因为您的 DLL 也需要它们,除非您静态链接所有内容。
-
如果您正在谈论混合基于 c++ 的 msvc 和 mingw dll,您可能会遇到不兼容问题,从而阻止您使用使用其他工具链创建的 dll。标准库会有完全不同的实现
-
如果您的编译器不同,为什么不能跨 DLL 边界共享标准库对象(如
std::string),请参阅 stackoverflow.com/a/5347413/103167。