【发布时间】: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)。