如何在Visual Studio中将另一个项目中用C语言编写的源代码包含到自己的C++项目中?

5
我想在Windows的Visual Studio中使用Potrace来完成一个C++项目,但我不知道如何将Potrace包含到我的项目中。 我已经尝试使用Cygwin编译C文件,从而创建一个.a文件,并在Visual Studio中链接它,但这没有成功。Visual Studio能够识别Potrace函数,但是当运行一个测试程序时调用Potrace(Calling potrace_version() ),Visual Studio会出现“LNK2019 unresolved external symbol _potrace_version referenced in function_main”的错误。
我已经使用上述技术在Ubuntu上做到了这一点,然后通过以下方式编译我的代码: g++ main.cpp backenddxf.cpp ImageManipulation.cpp ./libubuntu/libpotrace.a -o test.out 'pkg-config --cflags --libs opencv
我需要将源代码(网站上称为“source distribution”)编译为一个lib文件,然后将其链接到我的项目中吗?如果是这样,该怎么做呢? 或者是我漏掉了什么东西。我正在使用Windows 10上的Visual Studio 2017。
我对C++的工作原理不是很精通,因此非常感谢详细的解释。

2
Cygwin生成的静态库(具有“.a”后缀)与Visual C++链接器期望的“.lib”静态库不同。并且由两个不同的编译器生成。如果没有现成的Visual C++库预构建,则必须寻找Visual Studio项目文件。如果没有任何文件可用,则必须尝试使用库的源和头文件创建自己的库项目。 - Some programmer dude
一个实际的选项是编译 DLL。这样可以避免在 Visual Studio 项目中使用源代码。相反,您将使用 Windows 的运行时链接。Cygwin 和 Visual Studio 都知道 Windows 运行时链接的工作原理。 - MSalters
1个回答

4

我按照Yaakov在这个答案中提供的方法,成功将Potrace编译成.a文件。

./configure --prefix=/usr/x86_64-64-ming32/sys-root/mingw --host=x86_64-w64-mingw32 --with-libpotrace

然后

make

之后,我使用了Stuti Rastogi的答案来学习如何在Visual Studio中链接.a文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接