链接Qt中的obj文件

时间:2014-07-07 17:12:49

标签: c++ c qt lnk2019

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

此外,在Qt我包含头文件triangle.h和对象LIBS + = path / triangle.obj

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

LNK2005 that _main is already defined in main.obj

LNK2019 unresolved external symbol _triangulate reference

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

1 个答案:

答案 0 :(得分:2)

首先,让我们简单地解释一下基础知识。

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

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

在程序中,您只能有一个主要功能,一个唯一的入口点。

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

要解决您的问题,我会看到两种不同的解决方案:

1-最简单!

创建一个Qt / C ++程序,可以根据需要调用“三角形可执行文件”。这样你就可以用不同的编译器等单独编译它们...... 您可以使用QProcess类启动外部程序。

2-不太容易:/

通过删除主要功能来修改已启动的源文件,将Qt / make配置为具有相应的编译命令行以使其正常工作。我不想解释更多,因为我热烈建议你选择第一个解决方案;)