随便找的地方写下一些小问题。作为程序员最头疼的不是技术难点而是在实现过程中遇到的各种各样的诡异的小问题。例如,这两天用vs封装了一个c++的动态库给QT程序用,原本以为很简单的事情,期间状况不断,目前也还没完全弄好,先把过程记下来。
第一阶段:vs2008封装了动态库,并用vs卸了个示例程序调用它。完全没问题。
第二阶段:将此动态库提供给示例QT程序(编译器为qt-msvs),调用动态库过程中崩溃,疑似库里面的内存问题。经过各种调试,发现库里面出现的两处printf语句引起的崩溃。(好吧,谨记,printf语句会引起qt程序崩溃。。。)
第三阶段:将此动态库提供给目标QT程序(编译器为qt-mingW),动态库调用过程中崩溃。。今晚上下班后看看,待续。。
好吧,是qt不兼容c++的list导致的。原本想用纯C重写list的数据结构,因为没时间就做罢。于是动态库接口之后不返回任何数据类型,将所需数据写入ini文件,程序从里面读。。。
算是完了吧。
---------------------------------------------------------
结果还没完。写成配置文件以后,时不时程序还是会崩溃。打出的日志显示动态库程序已经运行完了。。所以应该还是内存问题。期间尝试过各种改约定调用,及动态库的运行库类型。依然还是会崩溃。。
折腾一晚上无果。回家洗个澡继续回来上班。把动态库的接口函数重新开始写,从原先的什么也不做,一句一句往上加。于是,,,终于发现问题所在:变量定义的位置!!!!!!变量定义必须在函数最前面!!!!折腾这么久,终于找到原因----------------------------多么痛的领悟~~~~
记着这个教训。。。解决问题的方法,真是好重要。。。