0

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では、上記をhppファイルに含めますForm1

MyHeader::SomeFunction(0);

これはすべて正常にコンパイルされますが、リンカーは未解決の外部を報告します。したがって、明らかに名前空間と関数が表示されません。どうすれば修正できますか?

追加の質問として-そのような関数セットを複数の形式で使用する場合、すべて一度だけコンパイルして正しく再利用する必要があります(同じ関数の複数のコピーがないと思いますか?)

4

2 に答える 2

2

実際の関数は、ヘッダー ファイルで宣言されたインターフェイスを実装しない方法で cpp ファイルで定義されます。

埋め込む

namespace MyHeader
{
    void SomeFunction(int Param) { /* Your implementation goes here. */ }
}

cpp ファイルで。

于 2013-10-25T10:26:20.760 に答える