在VS中创建了一个动态库工程proj_dll,头文件中定义了一个struct,然后再另一个工程中 proj_demo 中调用改动态库。
两个工程在一个解决方案下,均已经编译调用成功。
然后,由于需求变动,增加了struct 的字段,然后再次编译 proj_demo 工程,发现std::vector<struct>总是内存错误;反复调试,折腾了半天工夫也没找到原因。
第二天,又继续攻坚,终于找到原因:由于改变了 proj_dll 的头文件定义,需要重新编译 proj_dll,这样调用动态库才不会出错。
事实上:proj_dll、proj_demo 中的头文件数目非常大,往往分不清楚那个头文件是哪一个工程的,并且 proj_dll 的头文件基本没变过,因此,导致改动之后,想不起来要重新编译动态库,从而导致调用时的内存错误。