VS项目,发生在窗口dll和通信dll之间,窗口dll里的文件调用了通信dll中一个单例类的两个函数,去修改单例中的一个bool成员变量为true或false,本是一个非常简单的功能,编译时在窗口dll下却报错无法识别的外部信号,其描述指向了问题源自这两个单例的函数。
经过排查,发现是窗口dll的属性→链接器→动态库附加包含目录中,在靠前的一个路径下有一个通信dll的旧的.lib文件,编译时链接了这个,后面的路径下的该通信dll的.lib文件就不再被链接使用,导致窗口dll下的文件虽然包含了通信dll单例的头文件,能够识别到这两个函数,但是通信dll的.lib文件是旧的,无法找到这两个函数的实现,所以产生无法识别的外部信号的报错。