如何解决不能 __declspec(dllexport) 独立的类
#pragma once
#include "pch.h"
namespace marr {
template <typename T>
class __declspec(dllexport) myarray {
private:
T* arr = NULL;
int capacity;
public:
myarray(int initialCapacity = 0) {
if (initialCapacity != 0)
this->arr = new T[initialCapacity];
this->capacity = initialCapacity;
}
T& operator[](int index) {
if (this->capacity <= index)
this->growCapacityTo(index + 1);
return this->arr[index];
}
~myarray() {
delete[] this->arr;
}
private:
void growCapacityTo(int count) {
T* newarr = new T[count];
for (int i = 0; i < this->capacity; ++i)
newarr[i] = this->arr[i];
this->capacity = count;
delete[] this->arr;
this->arr = newarr;
}
};
}
还有myarray.cpp
:
#include "pch.h"
#include "myarray.h"
// nothing
在 Visual Studio 中构建上述内容不会创建 .lib
文件。
删除模板不会改变这一事实:
class __declspec(dllexport) myarray {
private:
int* arr = NULL;
int capacity;
public:
myarray(int initialCapacity = 0) {
if (initialCapacity != 0)
this->arr = new int[initialCapacity];
this->capacity = initialCapacity;
}
int& operator[](int index) {
if (this->capacity <= index)
this->growCapacityTo(index + 1);
return this->arr[index];
}
~myarray() {
delete[] this->arr;
}
private:
void growCapacityTo(int count) {
int* newarr = new int[count];
for (int i = 0; i < this->capacity; ++i)
newarr[i] = this->arr[i];
this->capacity = count;
delete[] this->arr;
this->arr = newarr;
}
};
}
在头文件中添加一个随机函数,确实会导致创建 .lib
文件,例如:
__declspec(dllexport) int test() {
return 0;
}
这是正确的和预期的行为吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。