網上廣泛使用的方法,經過測試沒有成功!
因爲DLL導出名和編譯鏈接時使用的名稱不一樣,導致編譯通不過。一種是xxx@nn格式,還有一種是__imp_xxx@XYZ格式。
如果手動修改DEF文件裏面的函數名爲鏈接所需的名字,編譯能通過,但運行時提示找不到XXX函數的入口點。
經過一番百度,終於找到一位高人所寫的文章和工具解決了我的問題!
文章地址:https://bbs.csdn.net/topics/390707917
生成DEF文件後,手工修改函數爲以下格式:
LIBRARY demo.dll
EXPORTS
Initialize@12=Initialize
CalcCRC@8=CalcCRC
Initialize@12=Initialize前面的@12表示這個函數有3個參數,等號後面的Initialize是DLL導出函數的原始名字。
生成lib文件後,再用ImpLibEditor工具的Change To [Undecorate]功能修改函數名,最後另存爲新的lib文件即可。
相關工具已經上傳到網盤。下載地址:https://share.weiyun.com/5zM4Wfq