visual-c++ - 在 mingw 中使用 msvc lib

标签 visual-c++ dll mingw

我有一个带有开发工具的硬件(x 射线传感器)。但是 afaiu 这些是内置在 msvc 中的。所以我有一个 .lib 文件和 .dll 文件。如果我将此 lib 文件包含到我的项目中(我正在使用 qt),并将 dll 文件放入 exe 文件夹并使用 MSVC-Release 选项进行编译,则每次都有效。但是当我尝试使用 mingw-Release 选项进行编译时。它失败。

对“imp__ZN6IDcDrv6CreateEPKci”的 undefined reference

对 `imp__ZN6IDcDrv14GetDeviceCountEv' 的 undefined reference

你能指出一些出路,以便我可以使用这些库。和使用 mingw 编译器的 dll 文件

附:
我尝试过但失败了
impdef dclibsn.dll>dclib.def

dlltool -dllname dclibsn.dll --def dclib.def --output-lib libdclibsn.a

这就是我的 def 文件的样子

LIBRARY "dclibsn.dll"
EXPORTS
??0DcDrv@@QAE@ABV0@@Z
??0DcDrv@@QAE@V?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
??0IDcDrv@@QAE@ABV0@@Z
??0IDcDrv@@QAE@XZ
??1DcDrv@@QAE@XZ
??4DcDrv@@QAEAAV0@ABV0@@Z
??4IDcDrv@@QAEAAV0@ABV0@@Z
?CaptureImage@DcDrv@@AAE_NHHHK_NHH@Z
?CloseUsbDevice@DcDrv@@AAE_NXZ
?ColumnDefectComp@DcDrv@@AAEGPBGH@Z
?CompensationImage@DcDrv@@AAEXPAGQAEHH@Z
?Create@IDcDrv@@SAPAVDcDrv@@PBDH@Z

注意这个文件中的最后一个条目(创建。)我试图在程序中调用它,我得到
(.text+0x1ad): undefined reference to `_imp___ZN6IDcDrv6CreateEPKci'

如果我替换该行 ?Create@IDcDrv@@SAPAVDcDrv@@PBDH@Z

使用 imp__ZN6IDcDrv6CreateEPKci 进行编译,但出现错误。
The procedure entry point _ZN6IDcDrv6CreateEPKci could not be located in the dynamic link library dclibsn.DLL. 

最佳答案

看到这个:
How to use libraries compiled with MingW in MSVC?

我的意思是用外部“C”块围绕#include。
因为使用 extern "C"将指示编译器函数正在使用 C 链接,而不是 C++,这将阻止它对函数执行名称修改。

我认为名称修改会导致链接出现问题。
不知道这是否有助于自动使用 dll。希望它会。
因为我需要在 MSVC 2005 中编写一个基于 CUDA 的 dll 并在 mingw 中使用它。

希望这有帮助。 :-?

关于visual-c++ - 在 mingw 中使用 msvc lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7064160/

相关文章:

c++ - 无法构建,qmake.exe 在 Qt Creator 中崩溃

c++ - 关于派生类成员隐藏基类成员的警告

C# dotnet web 应用程序 : Dll's xml config file is lost when Publishing

c# - 如何安装 Visual Studio dll 文件?

windows - 如何减少每次 ClickOnce 更新中供应商 dll 的大小?

fortran - MPICH2 中的 MPI_Allreduce 失败

python - ImportError 在 MinGW-W64 Python 3.6 中导入 ssl

visual-c++ - 如何更改 MS Visual Studio 2008 用于打开文件的代码页?

c++ - 如何为 do {} while(false) 禁用 C4127

windows - struct sockaddr,sin_family不是成员