为 'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker' 检测到不匹配:值“1”与 msvcrtd.lib 中的值“0”不匹配
mismatch detected for 'vccorlib_lib_should_be_specified_before_msvcrt_lib_to_linker': value '1' doesn't match value '0' in msvcrtd.lib
我有一个 UWP 的 C 库项目。有一些 C 文件调用 CPP 中定义的 C++ WINRT 函数 file.It 编译成功并生成库文件 (LIB)。我在 Visual Studio 2015 年使用更新 1 进行编译,目标平台是 10.0.10240.0
但是,我想生成 DLL 而不是 LIB 文件。这是我为更改项目所做的更改,以便它生成 DLL 而不是 LIB。
尝试1:
因此,在启动项目中,在 Configuration Properties => General 中,我将 Configuration 从静态库更改为动态库。
并且在所有项目中,我从多线程调试(/MTd) 更改为多线程调试DLL(/MDd)。
尝试2:
创建了一个新项目 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'
我有一个 UWP 的 C 库项目。有一些 C 文件调用 CPP 中定义的 C++ WINRT 函数 file.It 编译成功并生成库文件 (LIB)。我在 Visual Studio 2015 年使用更新 1 进行编译,目标平台是 10.0.10240.0
但是,我想生成 DLL 而不是 LIB 文件。这是我为更改项目所做的更改,以便它生成 DLL 而不是 LIB。
尝试1: 因此,在启动项目中,在 Configuration Properties => General 中,我将 Configuration 从静态库更改为动态库。
并且在所有项目中,我从多线程调试(/MTd) 更改为多线程调试DLL(/MDd)。
尝试2: 创建了一个新项目 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'