文中只是谈些Dll的调用问题,只是自己的经验。
开始自己编写的Dll是有VC6完成,测试也是在VC6上完成,但是问题在于被VS2005编译器调用时,却出了问题,耗费了好几天时间,期间也就结了很长时间,自己也尝试了一些纠正的方式,但是还是没有解决。问题就是主程序里传指针给Dll里的Vector指针,传的进去,但是在Dll指针的地址为空,异常在网上说是0X000005地址内容非法访问,最后也是没有解决,最后归结到了VS2005和VC6的问题,最后尝试了一下将VC6的Dll代码转为VS2005,问题解决。
结论:VS2005可以调用VC6编写的Dll,但不完全所有情况都是正确的,但VC6调用VS2005是不行的,貌似VC6.0的库比VS2005低。
另外一个值得注意的基类的virtual函数问题,编写生成Dll没有问题,但是测试的时候会出现无法解析的外部符号。经过尝试,有两个办法可以解决
(1):基类的函数不写成虚函数编译成Dll;
(2):把头文件拷过去的时候改为不是虚函数;
建议采用第一种,不过也有基类写成虚函数的但是没出错,目前还不知道为什么。
有时测试Dll时会出现程序无法定位到程序输入点之上,主要原因是主程序调用Dll的时候没有对其实例化。
建议:用什么编译工具编写Dll,就采用什么编译工具调用,否则,可能会出问题。