[問題] export dll時 lib中symbol的問題
平台是在VC
大家好
請教各位一個link的問題
我現在在某平台呼叫一個API
例如
ShellExecuteEx(NULL);
出現link error
Error 9 error LNK2001: unresolved external symbol __imp_ShellExecuteExW
當然我知道一定是lib沒加入 找不到這symbol
但我的疑問是
為啥他會直接顯示__imp版本找不到?
而不是說_ShellExecuteEx@4找不到?
原本是懷疑mangling問題 他不知道用什麼機制會把function name 翻成_imp prefix...
但我覺得沒道理
所以我把PC版本的lib dump出來 確實有兩個symbol
__imp__ShellExecuteEx@4
_ShellExecuteExA@4
所以我覺得他會不會是實作寫
ShellExecuteEx(...)
{
imp__ShellExecuteEx(...);
}
但若是這樣 我把這平台所有的lib dump symbol出來
至少要會有_ShellExecuteExA@4 而沒有__imp__ShellExecuteEx@4 , 我的想法才應該沒
錯~~~
現在就很不解這個問題
但win32 的dll好像都是這樣設計
常常看到_imp版本開頭的unresolved...
仔細想想卻不太明白為啥是找不到_imp版本...
請教各位
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.147.15.66
推
03/13 12:40, , 1F
03/13 12:40, 1F
→
03/13 12:40, , 2F
03/13 12:40, 2F
推
03/13 12:55, , 3F
03/13 12:55, 3F
→
03/13 13:09, , 4F
03/13 13:09, 4F
→
03/13 13:10, , 5F
03/13 13:10, 5F
→
03/13 14:17, , 6F
03/13 14:17, 6F
推
03/13 14:40, , 7F
03/13 14:40, 7F
→
03/13 18:00, , 8F
03/13 18:00, 8F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):