1

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

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

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

4

1 回答 1

0

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

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

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

于 2013-07-03T13:59:08.513 回答