VC++ DEF 文件 终于入门了

前两天细伢要我帮他写个按一下就K.O.敌人的WoW的宏,呵呵,当然不可能。不过我倒是看到了WoW宏的魅力。看了wowwiki.com的API介绍后,发现UseAction和SpellByName两个函数从2.0起就被声明为PROTECTED,即禁止在宏中用/run和/script完成。于是我打算写一个Add-ons,在里面调用魔法,做一个自动打怪(这个还不知道到底行不行)。看了几个Add-ons后,发现不难,于是又回到Lua看看。

Lua中,我这次用了Filesystem,Pluto和LSqlite,都要求自己编译。编译之后当然是一大堆的unresolved symbol,明显VC把函数改名了。于是用extern “C"和__declspec(dllexport),差不多解决了许多问题。并且理解了Lua的require机制:查找可能的名字,可以是DLL也可以是Lua。这个都不是问题。后来用sqlite的时候才是问题的开始,它的编译版本有两个文件——DLL和DEF,用DEF生成LIB,导入,找不到_sqlite_*。烦!好了,你找不到,我换招。我用Lua写了个脚本,将sqlite3.def的函数名都变成_sqlite_* = sqlite_*,以期许VC能认出来,但是,明显,VC是猪,认不出。我交换上面两项的位置,同样没用。后来还来了个缺少sqlite3.lib的运行期错误。查了资料,把EXPORTS改为IMPORTS,先LIB.exe没警告,结果还是没用。晚上洗澡回来又试了一次,被告知这个和x86不兼容。看来还是EXPORTS。我dumpbin了第一次生成的lib(_sqlite_* = sqlite_*),看到函数名变成了__sqlite_* = sqlite_*,注意,这里是两个下划线!!!原来是这个样子,前面的名字会自动加上"_"前缀。于是改成这个样子sqlite_* = sqlite_*,那么前面自动变成了_sqlite_* !!!后面没有问题了,而且没有什么缺少sqlite3.lib的问题。

呵呵,马上考摄影测量,复习了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值