class AFX_EXT_CLASS CA
{
f();
CA();
~CA();
}
在另一个exe中 定义了CA a,
但在调用a.f()方法时,报内存错误。为什么?
然后我定义 CA * a;
a = new CA;
a->f();
delete a;
此时a->f();没报错误,但在delete a时报错,为什么?
请高手指点!
13 个解决方案
#1
No
#2
全部代码贴出来?
#3
================================================================
◆◆◆ CSDN查询助手,查询方便快捷◆◆◆
下载地址:
http://CoolSlob.ifood1.com/Download/CSDNFinder.exe
http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]
#4
代码不全,看不明白;
有可能是函数内部的问题,你能不用指针试试吗?
CA a;
a.f();
有可能是函数内部的问题,你能不用指针试试吗?
CA a;
a.f();
#5
share dll link 了吗?
#6
f()方法肯定没问题!
我不知到在DLL中导出的CLASS是不是一定要用指针才能用?
我不知到在DLL中导出的CLASS是不是一定要用指针才能用?
#7
CA a;
a.f();
没必要,这样你试过了吗?
a.f();
没必要,这样你试过了吗?
#8
DLL中导出的CLASS不是一定要用指针才能用,像你那么写也可以。
我觉得可能不是你程序的问题,要用dll导出的类需要注意以下几点,你看看是不是都注意到了。
1.如果dll中的一个类A在工程B中被用到了,那么A的.h文件一定要copy一份放到B的目录下,然后再需要的地方加include "A.h";
2.在工程B的setting中,一定要在link的标签页中包含A生成的.lib文件;
3.在link的标签页中,选择Input的设置,在Additional library path中加入dll的路径。注意是生成的.lib的路径;
4.一定要注意版本的协调,生成Debug的B.exe一定要用Debug的A.dll,对于Release同理;
其它的暂时没想起来,应该差不多就这些了。
我觉得可能不是你程序的问题,要用dll导出的类需要注意以下几点,你看看是不是都注意到了。
1.如果dll中的一个类A在工程B中被用到了,那么A的.h文件一定要copy一份放到B的目录下,然后再需要的地方加include "A.h";
2.在工程B的setting中,一定要在link的标签页中包含A生成的.lib文件;
3.在link的标签页中,选择Input的设置,在Additional library path中加入dll的路径。注意是生成的.lib的路径;
4.一定要注意版本的协调,生成Debug的B.exe一定要用Debug的A.dll,对于Release同理;
其它的暂时没想起来,应该差不多就这些了。
#9
回SUPERJOE
其实我编译都通过了,问题是出在运行时!
其实我编译都通过了,问题是出在运行时!
#10
是不是在DLL这的代码中要加上什么参数才能解决问题?
#11
为什么不把全部代码贴出来呢?
这样大家都是在猜。
这样大家都是在猜。
#12
参数?不用吧,就是在类前加一个AFX_EXT_CLASS呀。
你把代码贴出来看看
你把代码贴出来看看
#13
a = new CA();这样比较好
建议检查版本问题,看你调用的是不是最新的DLL和EXE
建议检查版本问题,看你调用的是不是最新的DLL和EXE
#1
No
#2
全部代码贴出来?
#3
================================================================
◆◆◆ CSDN查询助手,查询方便快捷◆◆◆
下载地址:
http://CoolSlob.ifood1.com/Download/CSDNFinder.exe
http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]
#4
代码不全,看不明白;
有可能是函数内部的问题,你能不用指针试试吗?
CA a;
a.f();
有可能是函数内部的问题,你能不用指针试试吗?
CA a;
a.f();
#5
share dll link 了吗?
#6
f()方法肯定没问题!
我不知到在DLL中导出的CLASS是不是一定要用指针才能用?
我不知到在DLL中导出的CLASS是不是一定要用指针才能用?
#7
CA a;
a.f();
没必要,这样你试过了吗?
a.f();
没必要,这样你试过了吗?
#8
DLL中导出的CLASS不是一定要用指针才能用,像你那么写也可以。
我觉得可能不是你程序的问题,要用dll导出的类需要注意以下几点,你看看是不是都注意到了。
1.如果dll中的一个类A在工程B中被用到了,那么A的.h文件一定要copy一份放到B的目录下,然后再需要的地方加include "A.h";
2.在工程B的setting中,一定要在link的标签页中包含A生成的.lib文件;
3.在link的标签页中,选择Input的设置,在Additional library path中加入dll的路径。注意是生成的.lib的路径;
4.一定要注意版本的协调,生成Debug的B.exe一定要用Debug的A.dll,对于Release同理;
其它的暂时没想起来,应该差不多就这些了。
我觉得可能不是你程序的问题,要用dll导出的类需要注意以下几点,你看看是不是都注意到了。
1.如果dll中的一个类A在工程B中被用到了,那么A的.h文件一定要copy一份放到B的目录下,然后再需要的地方加include "A.h";
2.在工程B的setting中,一定要在link的标签页中包含A生成的.lib文件;
3.在link的标签页中,选择Input的设置,在Additional library path中加入dll的路径。注意是生成的.lib的路径;
4.一定要注意版本的协调,生成Debug的B.exe一定要用Debug的A.dll,对于Release同理;
其它的暂时没想起来,应该差不多就这些了。
#9
回SUPERJOE
其实我编译都通过了,问题是出在运行时!
其实我编译都通过了,问题是出在运行时!
#10
是不是在DLL这的代码中要加上什么参数才能解决问题?
#11
为什么不把全部代码贴出来呢?
这样大家都是在猜。
这样大家都是在猜。
#12
参数?不用吧,就是在类前加一个AFX_EXT_CLASS呀。
你把代码贴出来看看
你把代码贴出来看看
#13
a = new CA();这样比较好
建议检查版本问题,看你调用的是不是最新的DLL和EXE
建议检查版本问题,看你调用的是不是最新的DLL和EXE