1

我正在使用带有 /clr 的 VS2008,类库模板。我想要一个托管的类库。当我将库编译为 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 ​​error LNK2020: unresolved token (06000001) multiclasses.Class1::add

错误 2 error LNK2020: unresolved token (06000002) multiclasses.Class1::hadd

错误 3 error LNK2020: unresolved token (06000004) multiclasses.Class2::add

错误 4 error LNK2020: unresolved token (06000005) multiclasses.Class2::hadd

有什么办法可以将类库编译为静态库(.lib)?
我可以在静态库中导出类吗?尝试在静态库中导出类是根本错误的吗?

4

0 回答 0