看板Programming
标 题Re: vc++的.def对dll函数的影响??
发信站无名小站 (Tue Jun 6 03:45:23 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!news.cis.nctu!n
※ 引述《[email protected]》之铭言:
> 平常针对我写的dll,我都是用.h & .lib & .dll的方式引用。
> 但目前想改用LoadLibrary的方式,但发觉GetProcAddress()都抓
> 不到函数位址。
> 听别人讲,要有.def档,请问在vc++中要怎麽做?
在函数宣告前面加上 extern "C"
不然他会被加上 decorated name
因为预设是 C++ 编译,所以函数名称会改变 (为了支援多载)
就是说他在 DLL 里面的实际函数名称是修饰过的
比方说 max ( int, int ) 可能名称是 "max@int@int"
你用 GetProcAddress() 就必须输入 max@int@int 这种怪名字才能抓到
所以你要用用 extern "C" 来限制他的函数名称
当然这样做的话 这个函数名称就没办法被多载
--
To iterate is human, to recurse is divine.
递回只应天上有, 凡人该当用回圈. L. Peter Deutsch
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将知止知止可以不 yoco.Dorm-GD2.NCTU.edu.tw海