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

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

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

Try1:所以,在启动项目中,在配置属性=>常规我将配置从静态库更改为动态库。

在所有项目中,我从multithreading调试(/ MTd)更改为multithreading调试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 

任何建议如何解决这个问题。

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

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

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

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

标准/ nodefaultlib对我不起作用。

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

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