非常规的VC 2005导入库“无法找到符号”问题
问题是这样的,我有两个工程,一个是依赖库DEP,一个是调用程序test。依赖库编译为DLL,有一个导入库lib;调用程序使用这个lib。现有如下类:
class __declspec(dllexport) C;
class A : public C;
class B : public C;
经过一些考虑,我先后将DEP中的两个类A和B用__declspec(dllexport)公开成为接口。
但是test处理A,无论是构造还是调用其成员函数,都是没有问题的;但是对于B,构造和成员函数,编译器都会提示“error LNK2019: 无法解析的外部符号”。
我进行了如下尝试:
1. 用depends.exe打开DEP.dll,查看里面的符号,确定有B的各个相关函数,查到其导出名称为"?*B***"
2. 用dumpbin.exe打开DEP.lib,查看导出符号,其导出函数名称形式依然是"?*B***"
3. 编译器告知“error LNK2019: 无法解析的外部符号 __declspec(dllimport) public: __thiscall B::B(void)”,我查看对应的符号,形式为"__imp_?*B***",于是我怀疑,是不是因为这两个名字不匹配
4. 于是我去掉了test对DEP.lib的引用,看看对于A会生成什么样的符号名。结果发现A的符号名也是"__imp_?*A***",而DEP.dll中,A对应的符号也是"?*A***"形式,说明对于A正常配对了
5. 我重新编译过整个DEP工程,试图让编译器重新构造obj文件,然后重新链接,结果发现依然还是上述情况
请问有没有哪位朋友知道如何解决这个问题?