StaticCRT(LIBCMT(D))和DynamicCRT(MSVCRT(D))冲突

时间:2010-02-05 05:14:03

标签: visual-studio-2005 linker msvcrt crt libcmtd

我正在开发一个使用第三方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:已在LIBCMTD.lib(loctim64.obj)中定义了__localtime64

我尝试了各种链接器设置。此外,我将/ FORCE:MULTIPLE赋予链接器命令行以忽略多个定义并创建构建。它这样做了,但我的应用程序不能在净化器中运行。

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

由于

1 个答案:

答案 0 :(得分:1)

如果只需要使用静态库构建它,你可能已经被软化 - 它们的DLL已经被配置为动态链接到标准库,而你在构建项目其余部分时所做的任何事情都不会改变(除非您可以让该供应商提供静态链接到标准库的版本)。