Visual Studio:静态库的静态链接

时间:2012-10-03 10:08:43

标签: c++ mfc linker static-libraries

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

关联mfc-lib时,我收到了大量邮件symbol is already defined。这是因为我将标准C ++库链接了两次(一次在静态库中,另一次在mfc项目中)。

我该如何解决? /FORCE:MULTIPLE有一种解决方法,但我认为这是一个糟糕的决定。

1 个答案:

答案 0 :(得分:0)

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

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

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