というのも、namespace を使っているせいか、関数の名前がどうにもリンクできません。
以下のようにして、namespace を使っているライブラリを、使用するコードでは
どのようにして呼び出せばいいのでしょうか?
PrintFromLib(); はわかるのですが、
PrintFromAAA(); の呼び出し方がわかりません。
AAA::PrintFromAAA(); にしてみてもうまくいきませんでした。
環境:Visual C++ 2010 Express
[lib,dllを作成しているコード]
--- main.cpp ---
#include <stdio.h>
#include "main.h"
void PrintFromLib()
{
printf( "Hello from lib.\n" );
}
void PrintFromAAA()
{
printf( "Hello from AAA.\n" );
}
--- main.h ---
#define EXPORT extern __declspec(dllexport)
EXPORT void PrintFromLib();
namespace AAA
{
EXPORT void PrintFromAAA();
}
[lib, dll を呼び出すコード]
// test_for_lib.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#pragma comment( lib, "test_lib.lib" )
using namespace AAA;
int _tmain(int argc, _TCHAR* argv[])
{
PrintFromLib();
PrintFromAAA();
return 0;
}
--- main.h ---
#define EXPORT __declspec(dllexport)
EXPORT void PrintFromLib();
namespace AAA
{
EXPORT void PrintFromAAA();
}
コンパイルエラーは
1>------ ビルド開始: プロジェクト: test_for_lib, 構成: Debug Win32 ------
1> stdafx.cpp
1> test_for_lib.cpp
1>test_for_lib.obj : error LNK2019: 未解決の外部シンボル "void __cdecl AAA::PrintFromAAA(void)" (?PrintFromAAA@AAA@@YAXXZ) が関数 _wmain で参照されました。
1>c:\users\owner\documents\visual studio 2010\Projects\test_for_lib\Debug\test_for_lib.exe : fatal error LNK1120: 外部参照 1 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
となってます。