又见DLL

      其实,DLL这东西也用过一段时间了,但是大多都是对照着Copy样式,剩下的就是把自己想包含的东西写在里面,所以一直以来也没有报什么错。

     今天中午,迷迷糊糊的写了一个动态库,大概的功能就是通过动态库传递选择一个颜色,然后传递回来。很简单的一个东西,但是或许是在午睡状态,更可能是该注意的东西其实根本就是没有理解,所以,这事真是“一波两折”。

    一、测试调用DLL报内存错误。

   我立马想到这是指针方面的问题,创建、注销方面有问题?查啊查,没有啊?我一直保持着"创建、注销一一对应的规则",这个排除了。

   那是为什么?我想到以前在论坛上看到说动态库有问题,有时候是由于调用动态库的时候没有使用全路径,而只是使用相对路径。试一试,ok!

    二、这个动态库就是传递一个默认的颜色值LongInt类型,但是,窗体上默认的样子跟我的不一样啊?但是选择了一个颜色之后,我的测试窗体上确实有变化,我想反正我的基本功能实现了,算了吧?但是,我发现,取消选择颜色,我的测试窗体上的颜色也会变化啊?这功能完全没有实现啊!这里面肯定有问题!传递的默认值发生了改变,难道没有加const限制,加了之后还是老样子?这是怎么了?于是把动态库的工程和测试DLL的工程都打开,对应之后发现,测试的时候,声明的时候没有加动态库的参数入栈规则,这个应该是是个问题,试一试就符合预期!

   解决了这两个问题之后,我的睡意瞬间全无!!DLL确实很简单,但是那里面的规则真的不是可有可无啊!

  结论:1 动态调用动态库最好使用完全路径(可能导致严重的内存访问问题!)

           2 参数入栈规则必须定义与使用申明完全一致。

  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值