前几天项目中需要一个文件格式转换的工具,开始用VB写DLL,然后用VB测试这个DLL,没有问题,然后我就交给调用的同事了,也就没管了。可是等到同事调用的时候却总是出错,我说没问题呀,用VB测试一切正常,没有出现错误呀,一问才知道同事要用VB.NET来调用,这样我也用VB.NET来测试,果然VB.NET来调用就出问题了。开始就在VB里面改,怎么改都是我这里没问题,可是同事调用就有问题,因为不是在一个地方办公也没办法到他的机子上测试为什么。这样反反复复弄了两个小时,期间同事不断地催,我心里也很急,可是急也没用,就是好不了。人家都说VB是二次开发之王,我想我可是遇上对手了,上网搜呀搜呀,问题依然存在,期间还想是不是托管和非托管造成的呢,虽然有这个疑问可是我没弄过托管和非托管之间的调用,说实话这是我第一次用VB写代码更不了解VB.NET的机制了。
在不断搜不断想的过程中突然一个思路出现了,既然用VB调用VB写的DLL没问题,那么用VB.NET写DLL让VB.NET调用应该就没有这些问题了。程序员就要敢想敢干,虽然没用VB.NET写过代码,可是已经用VB写好了,转过来应该问题不大,我的这个想法马上就被现实打破了。在VB里面引用COM的TLB文件马上就可以用里面的类型了,可是在VB.NET里却怎么也不让你用,问经理说可以直接用,问题是不能直接用。然后去群里问,没人回答,只有自己解决了。断续搜,网上中文的几乎没有什么有价值的,英文有很多结果,可是相关性也不大。在一个偶然的机会我把错误提示点了一下,然后在窗口的一个一行文字,错误提示消失了,问题都解决了。还真是皇天不负有心人呀,好多问题都是有不断困惑中,突然一个不经意的操作把问题解决了,或者有一个想法从脑海里冒出来。
原文链接:https://www.f2er.com/vb/262865.html