1

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) としてコンパイルする方法はありますか?
クラスを静的ライブラリにエクスポートできますか? 静的ライブラリでクラスをエクスポートしようとするのは根本的に間違っていますか?

4

0 に答える 0