问题描述
#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 (将#修改为@)