【问题标题】:Moxa PComm.lib with g++ under mingw64: file format not recognizedMoxa PComm.library with g++ under mingw w64: 文件格式无法识别
【发布时间】:2017-01-03 16:05:23
【问题描述】:

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

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

所以我尝试将我的示例与 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

然后它返回

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

mingw64 下是否有任何选项允许将 windows .lib 与 gcc/g++ 链接?

谢谢

这个相关的“Linking *.lib files with MinGW”问题没有提到“文件格式无法识别”错误。另请参阅下面的我的 cmets。

bcag2

【问题讨论】:

  • Linking *.lib files with MinGW 的可能副本哦,如果它是 90 年代由 Borland 编译器为\制作的一个非常古老的 .lib,它可能与除了他们的编译器之外的任何东西都不兼容
  • 我试图重命名 lib 文件但没有成功……实际上 g++ 读取了该文件但无法使用。
  • 我也尝试过 Lib2a,它返回“无效或损坏的导入库”。 Moxa 的 PComm Lite 的最后一个版本是在 2012-05 年发布的,所以我认为它与 Borland 无关。这是我最初用 Borland 编写的程序,但这不是问题!
  • 如果是那个 windows 应用,为什么要将它移植到 Linux API?不,你不能使用 mingw 的窗口库文件,因为 migw 在 Linux 环境中模拟 gcc,它使用 GNU C++ 格式的二进制文件。您应该使用 Linux 库、OSS 或 Moxa。如果 Moxa 不这样做,我会感到惊讶)。接受的那个问题的答案就是你的答案
  • @Swift:不,mingw 不模拟 Linux 环境。 cygwin 可以,但mingw 只是在 windows 上运行的 GNU Compiler Collection (gcc),用于编译 windows 程序并生成 windows 文件格式。唯一不同的是调试元数据的格式,目标文件格式遵循微软的标准(COFF,不是 ELF)。

标签: c++ gcc mingw-w64


【解决方案1】:

我上次下载的是PCommLite for win7 x64

C:\Program Files\Moxa\PCommLite 1.6\Include\PCOMM.H 复制到我的包含项目文件夹(在我的情况下为lib),并对C:\Program Files\Moxa\PCommLite 1.6\Lib\x64 中的文件PCOMM.dllPCOMM.lib 执行相同操作。

然后我编译:

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

-I./lib 可以访问PCOMM.H 并链接到:

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

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 2020-04-04
    • 1970-01-01
    • 2015-10-14
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多