检测到'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker'不匹配:值'1'与msvcrtd.lib中的值'0'不匹配

时间:2016-01-22 05:54:42

标签: c++ c windows-runtime uwp

我有一个UWP的C库项目。有些C文件调用CPP文件中定义的C ++ WINRT函数。它正在成功编译并生成库文件(LIB)。我在Visual Studio 2015中使用更新1进行编译,目标平台是10.0.10240.0

但是,我想生成DLL而不是LIB文件。这是我更改项目所做的更改,以便生成DLL而不是LIB。

Try1: 因此,在启动项目中,In Configuration Properties =>一般我将配置从静态库更改为动态库。

在所有项目中,我从多线程调试(/ MTd)更改为多线程调试DLL(/ MDd)。

Try2: 创建了一个新项目Windows Universal Project,并将创建LIB的项目中的所有文件添加到此项目中。不过,我收到了以下错误。

现在,我收到了错误

vccorlibd.lib(init.obj) : error LNK2038: mismatch detected for 'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker': value '1' doesn't match value '0' in msvcrtd.lib(app_appinit.obj)
vccorlibd.lib(init.obj) : error LNK2005: __crtWinrtInitType already defined in msvcrtd.lib(app_appinit.obj)
msvcrtd.lib(initializers.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

任何建议如何解决此问题。

2 个答案:

答案 0 :(得分:6)

我有相同的问题并使用链接器标志修复它:

/nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib

对于调试版本,您可以使用:

/nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib

答案 1 :(得分:3)

标准/ nodefaultlib对我不起作用。

以下链接器标志(用于调试)在我的情况下完成了这个技巧:

/defaultlib:'vccorlibd.lib' /defaultlib:'msvcrtd.lib'