Ошибка компиляции при использовании библиотеки VS 2005 в VC6 - PullRequest
0 голосов
/ 30 июля 2010

У меня есть библиотека, скомпилированная в VS 2005, и я пытаюсь связать ее с одним из старых рабочих пространств VC 6, при этом я получаю следующие ошибки.

error LNK2001: unresolved external symbol _sprintf_s
error LNK2001: unresolved external symbol _strncpy_s
error LNK2001: unresolved external symbol _strcpy_s    
error LNK2001: unresolved external symbol _strcat_s    
error LNK2001: unresolved external symbol __time64    
unresolved external symbol __alloca_probe_16    
unresolved external symbol _main    
fatal error LNK1120: 7 unresolved externals    
Error executing link.exe.

Пожалуйста, помогите мне избежать этой ошибки.

Ответы [ 2 ]

2 голосов
/ 30 июля 2010

_strcpy_s не определен в библиотеках VC6, он был добавлен в VS2005 (или, может быть, VS2002 / 2003?).Я не думаю, что есть способ обойти это.

AFAIK, не принято использовать библиотеку из более ранней версии компилятора с более старой версией компилятора.

1 голос
/ 30 июля 2010

Полагаю, что вышеизложенное является результатом статической привязки исполняемого файла?

_s - это «безопасные» функции, которые Microsoft добавила в библиотеку времени выполнения, чтобы затруднить написание кода с переполнением буфера,Они были добавлены после VC6 (в VS.NET или VS2003), а функции отсутствуют в библиотеках времени выполнения VC6, поэтому ваша ссылка не работает.Единственный способ обойти это - создать полный набор двоичных файлов с VS2005 или с VC6.Последнее, вероятно, не очень хорошая идея, так как для этого потребуется переделать библиотеку, чтобы вместо нее использовать стандартные функции C.

Как правило, не рекомендуется смешивать версии компилятора в статических библиотеках и исполняемых файлах в качестве библиотек времени выполнения.внесите изменения, и у вас останутся такие проблемы.

Вы можете превратить свою библиотеку в DLL, но это открывает еще одну банку с червями ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...