Visual Studio:静态库的静态链接

Visual Studio: Static Link to Static Library

本文关键字:静态 链接 Visual Studio      更新时间:2023-10-16

我在Visual Studio中创建了一个静态库(其中没有使用mfc),并希望在静态链接的mfc项目(实际上是com dll)中与它链接。

当链接mfc-lib时,我得到一堆消息symbol is already defined。这是因为我链接了两次标准C++库(一次在静态库中,另一次在mfc项目中)。

我该如何修复它?/FORCE:MULTIPLE有一个变通方法,但我认为这是一个糟糕的决定。

将静态库链接到DLL或EXE项目时,需要注意所有项目都已编译为使用相同的运行库。因此,请将所有项目设置为相同的"MFC的使用",也设置为同一个"运行库"。如果不这样做,则一个项目可能已被编译为从标准CRT获取fopen函数,而另一个项目则可能已被编辑为从MFC获取fopen函数。混合这些对链接器来说是个问题,因为他不知道使用哪个运行时(在本例中为:哪个fopen)。

将DLL或EXE项目链接到另一个DLL项目时,这不是问题。您可以有一个不使用MFC的DLL,并将MFC EXE链接到该DLL。

如果您有一个在不同项目中经常使用的util库,那么您可能会考虑设置不同的构建设置,以便在DEBUG和RELEASE中以及使用和不使用MFC时构建库。然后在EXE项目中,您可以选择与项目设置匹配的库二进制文件。