0

我有一个依赖于标准库的 C++ 静态库。如果我选择将标准库链接为 DLL,则构建 OK。但是,如果我将它链接为 LIB,我就会遇到问题。我的库是指静态标准库,我的 EXE 是指标准库和 MFC,我收到错误消息“函数 XXX 已定义”(这里 XXX 表示任何标准库函数,如 operator new、free、malloc 等)。所以,看起来我的静态 C++ 库不仅导出了它自己的函数,还导出了标准库函数,并且它们被导入到 C++ 程序中两次。有没有办法解决这个问题并创建使用静态标准库的静态库?

4

1 回答 1

0

您的静态库包含标准库的完整副本,您将两者静态链接在一起。显然,将该库链接到您的应用程序会导致重复符号。也许静态链接应用程序可以解决这个问题,因为链接器可能会丢弃标准库的这些重复副本,但我认为这不适用于 MFC。将您的静态库与 DLL 标准库链接起来,这听起来可能有些矛盾,但实际上并非如此。

于 2013-01-27T16:44:32.277 回答