链接到命名空间中的函数时出现 GNU 链接器错误
我正在尝试将我的应用程序与我创建的静态库链接。尽管链接任何全局函数和类方法都没有问题,但链接到命名空间中声明的函数会生成错误“对 [namespace]::function 的未定义引用”。这是示例:
包含文件包含:
void global_function (void);
namespace vm
{
void my_namespace_function (void);
class some_class
{
static void my_class_function (void);
}
};
cpp 文件包含此:
using namespace vm;
int main ()
{
global_function(); // this is fine
some_class::my_class_function(); // this is fine
my_namespace_function(); // "undefined reference to vm::my_classless_function()"
return 0;
}
是的,我确实检查了 vm::my_namespace_function() 是否实际上在库中。
感谢您的帮助。
I'm trying to link my app with a static library that I've created. Though any global functions and class methods are linked with no problem, linking to functions declared in namespaces generate errors "undefined reference to [namespace]::function". Here is example:
include file contains:
void global_function (void);
namespace vm
{
void my_namespace_function (void);
class some_class
{
static void my_class_function (void);
}
};
cpp file contains this:
using namespace vm;
int main ()
{
global_function(); // this is fine
some_class::my_class_function(); // this is fine
my_namespace_function(); // "undefined reference to vm::my_classless_function()"
return 0;
}
And yes, I did check whether vm::my_namespace_function() is actually within a library.
Thanks for help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要在声明的同一命名空间中实现您的函数:
[file "namespace_func.cpp"]
[file "namespace_func.h"]
然后您可以链接到您的“namespace_main.cpp”:
命令行:
输出为:
You need to implement your functions in the same namespace as declared:
[file "namespace_func.cpp"]
[file "namespace_func.h"]
Then you can link to your "namespace_main.cpp":
Command line:
The output is:
你如何得到a
当你调用
my_namespace_function();
时?您检查过您对图书馆的期望吗?
How do you get a
when you call
my_namespace_function();
?Did you check what you expect in library?