在Qt中链接obj文件

Linking obj file in Qt

本文关键字:obj 文件 链接 Qt      更新时间:2023-10-16

我需要在我的c++项目中使用由Jonathan Shewchuk开发的三角测量库。问题是C文件必须编译成目标文件,我已经使用提供的make文件和visual studio编译器完成。这将生成triangle.exe和triangle.obj。

此外,在Qt I中包含头文件triangle.h和object作为LIBS += path/triangle.obj

由于在triangle.c中有main函数,我得到以下链接错误:

LNK2005 that _main is already defined in main.obj
LNK2019 unresolved external symbol _triangulate reference

我以前从来没有使用过对象引用,所以如果有人可以帮助我这个

首先,让我们非常简单地向您解释基础知识。

在C/c++中,编译时首先生成目标文件(.o)。它们由二进制形式的函数定义组成,但不能执行。

之后,调用链接器来链接这些对象文件以生成可执行文件。

在一个程序中,你只能有一个主函数,一个唯一的入口点。

当你写LIBS += path/triangle.obj时,它是不对的。windows上的库是.dll(动态)或. A(静态)文件。

为了解决你的问题,我看到了两种不同的解决方案:

1- easy !

创建一个Qt/c++程序,在你需要的时候调用你的"可执行三角测量"。这样你就可以用不同的编译器分别编译它们,等等……您可以使用QProcess类启动外部程序。

2- Less easy:/

修改源文件,删除主要功能,配置Qt/make,使其具有适当的编译命令行,使其工作。我不想解释更多,因为我强烈建议您选择第一种解决方案;)