VS2008、クラス ライブラリ テンプレートを /clr と共に使用しています。管理されたクラス ライブラリが必要でした。ライブラリをdllとしてコンパイルすると、すべて正常に動作します。
ヘッダー ファイル: multiclasses.h
#pragma once
namespace multiclasses
{
public ref class Class1
{
public: int a, b;
private: int c, d;
public: int add(int a, int b);
private: int hadd(int a, int b);
};
private ref class Class2
{
public: int a, b;
private: int c, d;
public: int add(int a, int b);
private: int hadd(int a, int b);
};
}
ソース ファイル: multiclasses.cpp
#include "multiclasses.h"
namespace multiclasses
{
int Class1::add(int a, int b)
{
return a + b;
}
int Class1::hadd(int a, int b)
{
return a + b;
}
int Class2::add(int a, int b)
{
return a + b;
}
int Class2::hadd(int a, int b)
{
return a + b;
}
}
構成タイプを静的ライブラリ (.lib) に変更すると、リンカーの警告が表示されます: 警告
警告 LNK4221: パブリック シンボルが見つかりません。アーカイブ メンバーにアクセスできなくなります
したがって、このライブラリを使用するプロジェクトは次のようになります。
エラー 1 エラー LNK2020: 未解決のトークン (06000001) multiclasses.Class1::add
エラー 2 エラー LNK2020: 未解決のトークン (06000002) multiclasses.Class1::hadd
エラー 3 エラー LNK2020: 未解決のトークン (06000004) multiclasses.Class2::add
エラー 4 エラー LNK2020: 未解決のトークン (06000005) multiclasses.Class2::hadd
クラス ライブラリをスタティック ライブラリ (.lib) としてコンパイルする方法はありますか?
クラスを静的ライブラリにエクスポートできますか? 静的ライブラリでクラスをエクスポートしようとするのは根本的に間違っていますか?