我的DLL如果配置 共享DLL中使用MFC 就不会有问题 如果配置 静态库中使用MFC 就有问题
高手看看!DLL中函数 extern "C" vector<int> __declspec(dllexport) test()
{
vector<int> a;
a.push_back(5);
return a;
}
使用DLL的地方void testMain()
{
typedef vector<int> (*Fun)();
Fun fun;
//加载动态库并获取test函数指针
......(省略,加载函数无问题) vector<int> a;
a = fun();
]
//////////////////////////////////////////DLL如果配置 共享DLL中使用MFC 就不会有问题DLL如果配置 静态库中使用MFC 那么函数退出释放a就会有问题 为什么?难道这样配置
就不能用vector? 到底是什么原因呢?(如果是vector的问题,该怎么用?)(不要问
DLL加载有没有成功,获取函数有没有成功的问题哈,肯定成功了) 谢谢大侠指教哈!!
高手看看!DLL中函数 extern "C" vector<int> __declspec(dllexport) test()
{
vector<int> a;
a.push_back(5);
return a;
}
使用DLL的地方void testMain()
{
typedef vector<int> (*Fun)();
Fun fun;
//加载动态库并获取test函数指针
......(省略,加载函数无问题) vector<int> a;
a = fun();
]
//////////////////////////////////////////DLL如果配置 共享DLL中使用MFC 就不会有问题DLL如果配置 静态库中使用MFC 那么函数退出释放a就会有问题 为什么?难道这样配置
就不能用vector? 到底是什么原因呢?(如果是vector的问题,该怎么用?)(不要问
DLL加载有没有成功,获取函数有没有成功的问题哈,肯定成功了) 谢谢大侠指教哈!!
共享DLL中使用MFC还是 静态库中使用MFC
使用共享dll方式的内存分配方式是一致的,因此没有内存问题。
但使用静态方式,在你的dll内部自己管理了一个独立的堆,与主程序的堆不同。这样导致内存问题。
a.clear();