|
我在C++ builder6.0下编译了一个ACE的ACE_bsd.lib(设置了debug,static,CodeGuard的编译参数)
在控制台下使用如下:
/*
Main.cpp文件
*/
#pragma hdrstop
#pragma link "ACE_bsd.lib"
#pragma link "ws2_32.lib"
//---------------------------------------------------------------------------
#include "ace/ACE.h"
#include <iostream.h>
//---------------------------------------------------------------------------
void ace_init(void)
{
ACE::init();
}
void ace_fini(void)
{
ACE::fini();
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
ace_init();
ace_fini();
return 0;
}
程序编译没问题,但是运行状态下退出时CB的CodeGuard检测到了好多如下错误:
/* CodeGuard 生成的部分日志*/
Error 00001. 0x350010 (Thread 0x0D58):
Resource type mismatch: a(n) object was expected.
delete(0x012B6B6C)
Call Tree:
0x0044B3AE(=Project1.exe:0x01:04A3AE) .\Object_Manager.cpp#137
0x0044C8E7(=Project1.exe:0x01:04B8E7) .\Object_Manager.cpp#614
0x00426DC0(=Project1.exe:0x01:025DC0) .\Init_ACE.cpp#34
0x004014ED(=Project1.exe:0x01:0004ED) E:\Test_ACE\ConsoleTest_ACE\Unit1.cpp#16
0x004015D0(=Project1.exe:0x01:0005D0) E:\Test_ACE\ConsoleTest_ACE\Unit1.cpp#29
0x0040222D(=Project1.exe:0x01:00122D) E:\Test_ACE\ConsoleTest_ACE\Unit1.cpp#20
The memory block (0x012B6B6C) [size: 20 bytes] was allocated with malloc
Call Tree:
0x00406253(=Project1.exe:0x01:005253) E:\Borland\CBuilder6\Include\oldstl/new.h#146
0x0044B9E0(=Project1.exe:0x01:04A9E0) .\Object_Manager.cpp#258
0x0044C0D9(=Project1.exe:0x01:04B0D9) .\Object_Manager.cpp#312
0x0044E68D(=Project1.exe:0x01:04D68D) .\OS_main.cpp#117
0x00401577(=Project1.exe:0x01:000577) E:\Test_ACE\ConsoleTest_ACE\Unit1.cpp#20
0x3267E552(=CC3260MT.DLL:0x01:07D552)
。。。。。。
还有多条如此类似的错误日志。
上面的代码大家看到,我还什么代码还没添加呢!我还注意到运行时错误都是在执行“ace_fini();”时生成的
实在是没辙了,研究了半天,我估计是ACE的库在卸载时出现的问题,我编译的ACE库(ACE_bsd.lib)一切正常啊!编译时
没出现任何问题的,而且还发现就这点代码程序运行时相当的慢!是为什么啊!是ACE库有问题!还是其它!望哪位在CB下使用过
ACE的高手指点指点,小生在此不胜感激! |
|