在 mingw64 下使用 g++ 的 Moxa PComm.lib:无法识别文件格式

Moxa PComm.lib with g++ under mingw64: file format not recognized

我正在重构一个旧的 Borland C/C++98 程序。我想在 linux 平台下对其进行编程,但开始时,因为我有几个附加板,我清理程序,删除所有 GUI OWL 并在 win7 和 mingw64 下进行测试以使用现代 gcc/g++.

我实际上尝试 link 使用 C320 turbo Moxa 多串口板的示例代码。 正如在 http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use 它应该 link .lib 和 .dll。

所以我尝试 link 我的样本与 Moxa PComm.lib 的 sio_open, sio_read, sio_write… 函数

g++ -m32 -Wall -std=c++14 src/main.cpp src/rs232_c320t.cpp … -L./lib -lPComm

它returns

./lib/PComm.lib: file not recognized: File format not recognized

是否有任何选项允许 link windows .lib 和 gcc/g++ 在 mingw64 下?

谢谢

这个相关的“Linking *.lib files with MinGW”问题没有提到 "File format not recognize" 错误。另请参阅下面我的评论。

bcag2

我最后下载了 PCommLite for win7 x64

C:\Program Files\Moxa\PCommLite 1.6\Include\PCOMM.H 复制到我的包含项目文件夹(在我的例子中是 lib),并对 C:\Program Files\Moxa\PCommLite 1.6\Lib\x64.[=22 中的文件 PCOMM.dllPCOMM.lib 执行相同的操作=]

然后我编译:

g++ -c -std=c++14 -D_hypot=hypot -DWIN32 src/*.cpp -I./lib/

其中 -I./lib 授予对 PCOMM.H 和 link 的访问权限:

g++ -shared *.o lib/PCOMM.LIB /c/Windows/System32/msvcr120.dll /c/ProgramData/Anaconda3/python36.dll -o _project.pyd

当然你可以一次完成所有的工作并创建一个 .exe:

g++ -o project.exe -Wall -std=c++14 -DWIN32 src/*.cpp -Ilib/ lib/PCOMM.LIB -L./lib/

根据 Moxa 支持人员的建议,不需要 -ansi