[英]Compilation error while using VS 2005 library in VC6
我有一個在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.
請幫助我擺脫這個錯誤。
VC6庫中未定義_strcpy_s ,它是在VS2005(或VS2002 / 2003?)中添加的。 我認為沒有辦法解決。
AFAIK,通常不使用早期版本的編譯器和早期版本的庫。
我假設以上是您靜態鏈接可執行文件的結果?
_s
函數是Microsoft添加到運行時庫中的“安全”函數,以使其更難編寫帶有緩沖區溢出的代碼。 它們是在VC6之后添加的(在VS.NET或VS2003中),而這些功能在VC6運行時庫中不存在,因此這就是鏈接失敗的原因。 解決此問題的唯一兩種方法是使用VS2005或VC6構建整套二進制文件。 后者可能不是一個好主意,因為它將要求您重新編寫庫以使用標准C函數。
通常,將編譯器版本混合在靜態庫和可執行文件中不是一個好主意,因為運行時庫確實會發生變化,並且您會遇到類似這樣的問題。
您可以將您的庫轉換為DLL,但這會打開另一罐蠕蟲……
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.