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