Инкрементная ошибка компоновщика VC++ LNK1000
Отказ от ответственности: я парень C# практически без опыта VS C++/MFC.
Я пытаюсь получить несколько проектов, построенных на моей машине, которые смешаны C++/.NET. При компиляции проекта C++ через командную строку на моем компьютере я получаю эту ошибку:
ССЫЛКА: фатальная ошибка LNK1000: внутренняя ошибка во время IMAGE::BuildImage [SOURCE_CODE_PATH_TO_VCPROJ]
Моя версия Link.exe: 9.00.30729.1
Строка кода, которая вызывает это, довольно проста:
System:: String ^ fullPath = gcnew System:: String (dllpath);
Когда я отказываюсь от gcnew и просто записываю строку на место, все компилируется правильно.
Поиск в Google приводит к большому количеству сообщений о том, что эта проблема исправлена с помощью kb948127, который включен в VS2008 SP1. Я подтвердил, что у меня установлено данное исправление. Я также проверил, что добавочное связывание отключено с параметром /INCREMENTAL:NO, но я все еще испытываю ошибку при каждой компиляции.
Есть ли настройка или переключатель, которые мне не хватает? Кто-нибудь сталкивался с такой проблемой раньше?
2 ответа
Я исправил ошибки компоновщика, изменив код для использования преобразования marshal_as для создания System::String^, но мне не ясно, что на самом деле вызвало ошибку компоновщика из исходного кода.
Вот строка, которую я поменял:
System::String^ fullPath = marshal_as (dllPath);
Я получил похожую ошибку:
Linking...
TapCommandFormat.lib(CTapCommandDisplay.obj) : fatal error LNK1000: unknown error; consult documentation for technical support options
Error executing link.exe (tool returned code: 1000)
ITP - 1 error(s), 0 warning(s)
Это произошло потому, что моей системе не хватило виртуальной памяти. Я закрыл огромный документ, который занимал около 1,4 ГБ виртуальной памяти, и проблема ушла...
$ 0,02