我最近获得了一个与Lumenera制作的相机接口的SDK。它们为MSVC提供.dll和.lib文件,并声称该库可以与Borland C ++一起使用。但是,我的项目使用的是MinGW(g ++),并且他们不提供支持。
我之前已经问过类似的问题(例如here,here和here),但我希望能够在MinGW中使用这些库,因为这些行在api标题中:
#ifdef __cplusplus
#define LUCAM_API
extern "C" __declspec(dllexport)
#else
#define LUCAM_API __declspec(dllexport)
#endif
#else
#ifdef __cplusplus
#define LUCAM_API
extern "C" /*__declspec(dllexport)*/
#else
#define LUCAM_API /*__declspec(dllexport)*/
#endif
#define LUCAM_EXPORT __stdcall
我已经读过,不太可能让C ++库在不同的编译器之间工作,但是这些行告诉我这些库是在C.这是一个公平的解释吗?
按照MinGW MSVC and MinGW DLLs页面上建议的步骤导致错误,例如:
undefined reference to `LucamNumCameras()@0'
我已经尝试了reimp和pexports以及dlltool程序,它们都给出了相同的响应。我无法获取源代码,在开始尝试将所有预先存在的代码迁移到MSVC之前,是否有任何最后的建议才能使其生效?
我正在使用CodeLite IDE,并为其链接器提供了库“liblucamapi.a”,并在相应的字段中给出了它的路径。我可以从构建输出中确认库路径是使用-L../../Lib/lib32
给g ++而库本身是"-llucamapi"
。除了-o ./Debug/v2 @"v2.txt"
之外,没有其他标志给g ++。