C++从外部文件调用静态成员函数
我在 Global.h 中定义了此类
class Global
{
public:
static string InttoStr(int num);
};
,在 Global.cpp 中,
Global::InttoStr(int num)
{
//Code To convert integer into string.
}
现在,从 SubMove.cpp 中,当我调用 Global::InttoStr(num) 时,出现以下错误:
error LNK2019: 无法解析的外部符号 Global::InttoStr(int )在函数 SubMove::toString(void) 中引用
然后我将该函数设为非静态并像这样调用它:
Global g;
g.InttoStr(num);
但错误仍然存在。
我认为这与 extern 有关并进行了搜索,但我无法建立任何联系。请帮忙。
I have this class defined in Global.h
class Global
{
public:
static string InttoStr(int num);
};
In Global.cpp, i have
Global::InttoStr(int num)
{
//Code To convert integer into string.
}
Now, from SubMove.cpp, when i call Global::InttoStr(num) I get following error:
error LNK2019: unresolved external symbol Global::InttoStr(int) referenced in function SubMove::toString(void)
Then I made the function non-static and called it like so:
Global g;
g.InttoStr(num);
But the error still persists.
I thought it had something to do with extern and searched it but i could not make any connection. Please help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先,试试这个:
另外,您是否从另一个库调用 InttoStr ?如果是这样,您需要导出“Global”类。
最佳实践是使用 lib 标头(在下面的示例中,将 LIB_ 替换为库的名称):
在包含 Global 的项目中定义 LIB_EXPORTS,在 Global.h 中包含 lib 标头,然后像这样定义类
每个项目都应该有它自己的 LIB_EXPORTS 和 LIB_API 定义,如 DLL1_EXPORTS、DLL1_API、DLL2_EXPORTS、DLL2_API 等。
基本上,这使得单独的 lib 使用 __declspec(dllimport) 处理先前的 dll 并解析所有外部函数。
First off, try this:
Also, are you calling InttoStr from another library ? If so, you'll need to export the class "Global".
Best practice is to use a lib header (in the example below replace LIB_ with the name of the library):
Define LIB_EXPORTS in your project contianing Global, include the lib header in Global.h, then define the class like this
Each project should have its own LIB_EXPORTS and LIB_API definition like DLL1_EXPORTS, DLL1_API, DLL2_EXPORTS, DLL2_API etc.
Basically this makes a separate lib treat the previous dll with __declspec(dllimport) and resolve all externs.