我正在开发一个使用第三方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赋予链接器命令行以忽略多个定义并创建构建。它这样做了,但我的应用程序不能在净化器中运行。
有没有一种方法可以做我想要实现的目标?我无法控制第三方源代码来控制其设置。
由于
答案 0 :(得分:1)
如果只需要使用静态库构建它,你可能已经被软化 - 它们的DLL已经被配置为动态链接到标准库,而你在构建项目其余部分时所做的任何事情都不会改变(除非您可以让该供应商提供静态链接到标准库的版本)。