richardwangfei 发表于 2008-1-28 08:54:47

在BCB6下使用ACE静态库使用时有运行时错误!哎,特烦!

我在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) 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的高手指点指点,小生在此不胜感激!

richardwangfei 发表于 2008-1-28 14:23:12

我急啊!

哪位高手支援支援啊!我还等着买票上火车回家呢!呵呵!:D

peakzhang 发表于 2008-1-28 16:13:22

ACE没问题,不要管它,不理会CodeGuard

richardwangfei 发表于 2008-1-29 12:32:42

哦!这也行啊!

CodeGuard在用于检查内存泄露方面是很有帮助的啊!不管是不是有内存泄露的问题!难道它和ACE有不兼容的问题!
哎,C++就没有一个像Java一样有个统一的SDK,不同的库之间简直是千差万别!ACE真是鸡肋啊!
页: [1]
查看完整版本: 在BCB6下使用ACE静态库使用时有运行时错误!哎,特烦!