0

我正在开发一个使用第三方 dll 和库的项目。我想使用静态 CRT (LIBCMTD) 构建我的项目,因为我希望在“IBM purifier”中运行我的应用程序。但是,第三方库是使用动态 CRT(MSVCRT) 构建的。

这给出了链接错误: MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __mktime64 已在 LIBCMTD.lib(mktime64.obj) 中定义 MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __gmtime64 已在 LIBCMTD.lib 中定义( gmtime64.obj) MSVCRTD.lib(MSVCR80D.dll) : 错误 LNK2005: __localtime64 已在 LIBCMTD.lib(loctim64.obj) 中定义

我尝试了各种链接器设置。我还给链接器命令行提供了 /FORCE:MULTIPLE 以忽略多个定义并创建一个构建。它这样做了,但我的应用程序仍然无法在净化器中运行。

有没有一种好方法可以做我想要实现的目标?我无法控制第 3 方源代码来控制他们的设置。

谢谢

4

1 回答 1

1

如果只需要使用静态库来构建它,那么您可能会感到困惑——他们的 DLL 已经配置为动态链接到标准库,并且您在构建项目的其余部分时所做的任何事情都不会改变这一点(除非您可以让该供应商提供静态链接到标准库的版本)。

于 2010-02-05T05:18:34.793 回答