我正在使用Visual Studio并正在开发一些在类A
中工作的C ++代码:
class A
{
public:
//......
static void foo();
};
导出类B
:
class __declspec(dllexport) B
{
public:
//...
void bar()
{
A::foo();
}
};
A
和B
被编译为AB.dll(和AB.lib)。
现在的主要计划:
int main()
{
B b;
b.bar();
return 0;
}
When compiling the main program and linking it to AB.lib,
it complains about the A::foo() as unresolved external symbol
(in this case A::foo is a static function).
Do I need to somehow export A::foo() or could it be that
I introduce errors somewhere? Any help is appreciated.
Modified:
1) Sorry for the type, it should be dllexport, not dllimport
2) in my actual project, the implementation is in .cpp files. They are not inline functions.
Thanks.
答案 0 :(得分:0)
我假设代码显示在你的.h头文件中,然后当你的头文件说:
class __declspec(dllimport) B
{
public:
//...
void bar()
{
A::foo();
}
};
首先:你说B类是IMPORTED,它适用于你的主应用程序,但不适用于你的dll。
第二个:B :: bar()不是从dll导入的,而是直接在你的主应用程序中实现(编译器直接在你的头文件中读取,并且它没有尝试从dll导入)
Recomendations:
FIRST:重新定义您的头文件,如下所示:
class __declspec(dllimport) B
{
public:
//...
void bar();
};
在dll项目的cpp文件中实现方法B :: bar
SECOND:从头文件中删除A类(如果可以的话)