У меня возникают проблемы с компилятором VC++. Я установил Windows SDK с компиляторы, библиотеки и заголовки, и попытался скомпилировать тестовую программу следующим образом:Ошибка связи стандартной библиотеки VC++
#include <cstdio>
int main(int argc, char* argv[]) {
printf("%s", "Hello world!");
return 0;
}
Это сценарий командной строки, я использую для компиляции:
@echo off
set clpath=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
set clname=cl.exe
set linkpath=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
set linkname=link.exe
set libpath=/libpath:"C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib" /libpath:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib"
set includepath=/I "C:\Program Files\Microsoft SDKs\Windows\v7.1\Include" /I "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"
set subsystem=console
set entry=main
set libfiles=
set cfiles=hello.cpp
set objfiles=hello.obj
set path=%clpath%
%clname% %includepath% /c %cfiles%
set path=%linkpath%
%linkname% %libpath% /subsystem:%subsystem% /entry:%entry% %libfiles% %objfiles%
И вот результат:
Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
hello.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
hello.obj : error LNK2019: unresolved external symbol printf referenced in function main
hello.exe : fatal error LNK1120: 1 unresolved externals
программа связывает хорошо до тех пор, пока я не пытаюсь ссылаться на любые стандартные библиотечные функции. Я пробовал общаться с переключателями NODEFAULTLIB и DEFAULTLIB, а также указывать стандартные библиотеки для прямой ссылки, безрезультатно.
О! Конечно, как глупо со мной. Большое спасибо! Кроме того, я использовал переключатель ввода, потому что я тоже получал нерешенную ссылку на процедуру инициализации crt, но это, очевидно, также решено сейчас. – glank