【发布时间】:2013-11-04 10:01:46
【问题描述】:
我想使用某个namespace 及其功能,以便以多种形式使用以具有某种共享功能。但是,我遇到了链接器问题。
这就是我所做的——我创建了一个新单元,并在其中写入了头文件:
#ifndef MyHeaderH
#define MyHeaderH
namespace MyHeader
{
enum { SOMETHING1, SOMETHING2 };
void SomeFunction(int Param);
}
#endif
当然,真正的函数是在cpp文件中定义的,以上只是来自h文件。
而cpp文件如下:
#pragma hdrstop
#include "MyHeader.h"
#pragma package(smart_init)
void SomeFunction(int Param)
{
//some code here
}
所以在我的主要形式Form1 中,我将上述内容包含在Form1的hpp文件中
MyHeader::SomeFunction(0);
这一切编译正常,但链接器报告未解析的外部。所以很明显它没有看到命名空间和功能。我该如何解决?
作为一个额外的问题 - 如果我以多种形式使用此类函数集,它应该只编译一次并正确重复使用(我猜它不会有多个相同函数的副本?)
【问题讨论】:
标签: c++ linker namespaces c++builder