我有一个依赖于标准库的C ++静态库。如果我选择将标准库链接为DLL,则构建正常。 但是,如果我将其链接为LIB,我就有问题了。我的库引用静态标准库,我的EXE引用标准库和MFC,并且我收到“函数XXX已定义”的错误消息(此处XXX表示任何标准库函数,如operator new,free,malloc等)。 因此,看起来我的静态C ++库不仅导出了自己的函数,还导出了标准库函数,并且它们被导入到C ++程序中2次。 有没有办法解决这个问题并创建使用静态标准库的静态库?
答案 0 :(得分:0)
您的静态库包含标准库的完整副本,您将两者静态链接在一起。显然,将该库链接到您的应用程序会导致重复的符号。也许静态地链接应用程序,可以解决这个问题,因为链接器可能会丢弃标准库的这些重复副本,但我不认为它适用于MFC。将你的静态库再次链接到DLL标准库,这可能听起来像是一个矛盾但不是真的。