微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 Visual Studio 配置为仅使用 C 标准库?

如何解决如何将 Visual Studio 配置为仅使用 C 标准库?

如何在 Visual Studio 2019 中配置一个 Visual C++ 项目以仅使用 C 标准库?

我尝试将项目的链接器输入设置下的“忽略所有认库”设置为“是”,然后在“附加依赖项”下添加msvcrt.lib

我收到了这些错误

1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __seh_filter_exe 
referenced in function "int __cdecl __scrt_common_main_seh(void)" (? 
__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __set_app_type 
referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol ___setusermatherr 
referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __configure_narrow_argv 
referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(utility.obj) : error LNK2001: unresolved external symbol __configure_narrow_argv
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol 
__initialize_narrow_environment referenced in function "int __cdecl 
pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(utility.obj) : error LNK2001: unresolved external symbol 
__initialize_narrow_environment
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol 
__get_initial_narrow_environment referenced in function "int __cdecl 
__scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __initterm referenced 
in 
function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __initterm_e referenced 
in function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol _exit referenced in 
function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __exit referenced in 
function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __set_fmode referenced 
in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol ___p___argc referenced 
in function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol ___p___argv referenced 
in function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __cexit referenced in 
function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(utility.obj) : error LNK2001: unresolved external symbol __cexit
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __c_exit referenced in 
function "int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol 
__register_thread_local_exe_atexit_callback referenced in function "int __cdecl 
__scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __configthreadlocale 
referenced in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol __set_new_mode 
referenced in function "void __cdecl pre_cpp_initialization(void)" (? 
pre_cpp_initialization@@YAXXZ)
1>msvcrt.lib(exe_main.obj) : error LNK2019: unresolved external symbol ___p__commode 
referenced 
in function "int __cdecl pre_c_initialization(void)" (?pre_c_initialization@@YAHXZ)
1>msvcrt.lib(error.obj) : error LNK2019: unresolved external symbol _strcpy_s referenced in 
function "void __cdecl _RTC_StackFailure(void *,char const *)" (? 
_RTC_StackFailure@@YAXpaxPBD@Z)
1>msvcrt.lib(error.obj) : error LNK2019: unresolved external symbol _strcat_s referenced in 
function "void __cdecl _RTC_StackFailure(void *,char const *)" (? 
_RTC_StackFailure@@YAXpaxPBD@Z)
1>msvcrt.lib(error.obj) : error LNK2019: unresolved external symbol ___stdio_common_vsprintf_s 
referenced in function __vsprintf_s_l
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __seh_filter_dll 
referenced in function ___scrt_dllmain_exception_filter
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol 
__initialize_onexit_table 
referenced in function ___scrt_initialize_onexit_tables
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol 
__register_onexit_function referenced in function __onexit
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __execute_onexit_table 
referenced in function ___scrt_dllmain_uninitialize_c
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __crt_atexit referenced 
in function __onexit
1>msvcrt.lib(utility.obj) : error LNK2019: unresolved external symbol __crt_at_quick_exit 
referenced in function _at_quick_exit
1>msvcrt.lib(tncleanup.obj) : error LNK2019: unresolved external symbol 
___std_type_info_destroy_list referenced in function "void __cdecl 
__scrt_uninitialize_type_info(void)" (?__scrt_uninitialize_type_info@@YAXXZ)
1>msvcrt.lib(default_precision.obj) : error LNK2019: unresolved external symbol __controlfp_s 
referenced in function __initialize_default_precision
1>msvcrt.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol _terminate 
referenced in function ___scrt_unhandled_exception_filter@4
1>msvcrt.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol _terminate
1>msvcrt.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol 
___current_exception referenced in function ___scrt_unhandled_exception_filter@4
1>msvcrt.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol 
___current_exception
1>msvcrt.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol 
___current_exception_context referenced in function ___scrt_unhandled_exception_filter@4
1>msvcrt.lib(chandler4_noexcept.obj) : error LNK2001: unresolved external symbol 
___current_exception_context
1>msvcrt.lib(utility_desktop.obj) : error LNK2019: unresolved external symbol _memset 
referenced in function ___scrt_fastfail
1>msvcrt.lib(chandler4gs.obj) : error LNK2019: unresolved external symbol 
__except_handler4_common referenced in function __except_handler4
1>msvcrt.lib(pdblkup.obj) : error LNK2019: unresolved external symbol 
___vcrt_GetmodulefileNameW referenced in function "int __cdecl _RTC_GetSrcLine(unsigned char 
*,wchar_t *,unsigned long,int *,unsigned long)" (? 
_RTC_GetSrcLine@@YahpAEPA_WKPAH1K@Z)
1>msvcrt.lib(pdblkup.obj) : error LNK2019: unresolved external symbol ___vcrt_LoadLibraryExW 
referenced in function "struct HINSTANCE__ * __cdecl GetPdbDllFromInstallPath(void)" (? 
GetPdbDllFromInstallPath@@YAPAUHINSTANCE__@@XZ)



我还尝试将 kernel32.libuser32.lib 添加到依赖项中,但它显示了相同的错误

解决方法

您可以在 VS 中为 C 和 C++ 使用 C++ 项目。它将理解这两种类型的代码。只需将您的源文件保存为 .c 并将头文件保存为 .h 而不是 .cpp 或 .hpp。 VS 2019 会自动调整和编译两者。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。