将模板应用于DLL

时间:2019-07-13 14:27:34

标签: c++ templates

要将模板应用于DLL

因为它不应用模板,但是以int响应,所以它处于执行状态。您所要做的就是使用模板。 “频谱代码说明项目文件行未显示错误状态 错误C2491'Klib :: Sorts :: swap':无法定义dllimport函数。 Klib c:\ users \ 82102 \ onedrive \ documents \ visual study \ projects \ klib \ consoleplication1 \ sorts.cpp 13
” 错误被打印出来。

Sorts.h

#ifdef MATHFUNCSDLL_EXPORTS
#define KLIBDLL_API __declspec(dllexport) 
#else
#define KLIBDLL_API __declspec(dllimport) 
#endif

#define _ARRAY void

namespace Klib
{
    class Sorts
    {
    public:
        template<typename T>
        static KLIBDLL_API _ARRAY swap(T a, T b);

        template<typename Array, typename Size>
        static KLIBDLL_API _ARRAY bubbleSort(Array arr, Size size);
    };
}

Sorts.cpp

#include "Sorts.h"
#include <stdexcept>

using namespace std;

namespace Klib
{
    template<typename T>
    _ARRAY Sorts::swap(T a, T b) {
        T temp = a;
        a = b;
        b = temp;
    }

    template<typename Array, typename Size>
    _ARRAY Sorts::bubbleSort(Array arr, Size size) {
        for (Size i = 0; i < size - 1; i++) {
            for (Size j = i + 1; j < size; j++) {
                (arr[i] > arr[j]) ? swap(arr[i], arr[j]) : NULL;
            }
        }
    }
}

我进行了气泡排序。我想将其保存在我的个人图书馆中。另外,我想提高效率。我想使它适用于任何类型的数据。所以我用了一个模板。 但是,请勿使用模板。我不知道为什么会这样。我该如何解决?

0 个答案:

没有答案