Release与Debug 区别这么大?

S.F. 2003-07-30 08:32:37
我是如下代码:

UINT dwThreadIDForMsg = 0;
unsigned long hThreadForMsg = 0;
hThreadForMsg = _beginthreadex(NULL, 0, InitializingServer, pMapInfo, 0, &dwThreadIDForMsg);

在builder 为 debug 时并不报错;但以Win32 Release 方式编译,则提示如下错误

E:\TestSvr\SockMsg_DBSrv.cpp(294) : error C2065: '_beginthreadex' : undeclared identifier

代码没问题,但为什么编译不了?工程是我下载的别人的vc++源码,在vc++6 ,vc++7下都编译过,就这里出现这个问题,能告诉我为什么吗?我刚开始接触vc++?谢谢!
...全文
1049 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
caojianye 2003-08-04
  • 打赏
  • 举报
回复
不看不知道,

看了才知道!

提的好问题!
S.F. 2003-08-04
  • 打赏
  • 举报
回复
现在不警告了,ok了;
我是在setting 中的c/c++ 下的 C++ Language 勾上了 Enable Run-Time Type Information(RTTI)

还有点不明白,这样设置后程序会稳定吗?
S.F. 2003-08-04
  • 打赏
  • 举报
回复
楼上的几位说的都对了,是realease模式编译选项为单线程,修改为多线程就没事了;
另外有几个警告信息,也和编译指令有关吗?

代码位置是:
CPlayerObject* pPlayerObject = dynamic_cast<CPlayerObject*>(m_pMasterObject);
警告信息是:
warning C4541: 'dynamic_cast' used on polymorphic type 'class CCharObject' with /GR-; unpredictable behavior may result
BlueSky2008 2003-07-31
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1520/1520262.xml?temp=.5700647
jyojyo 2003-07-31
  • 打赏
  • 举报
回复
在realease模式下,
1) Build/Seting.
2) 选择 c/c++ 选项
3) Category 中选择 Code Generation
4) 在 Use run-time libary 中选择一个合适的多线称版本。
rivershan 2003-07-31
  • 打赏
  • 举报
回复
什么是C Runtime 函式库的多绪版本
当C runtime 函式库于1970s 年代产生出来时,PC 的内存容量还很小,多任务是
个新奇观念,更别提什么多执行绪了。因此以当时产品为基础所演化的C runtime 函
式库在多绪(multithreaded)的表现上有严重问题,无法被多绪程序使用。
利用各种同步机制(synchronous mechanism)如critical section、mutex、semaphore、
event,可以重新开发一套支持多执行绪的runtime 函式库。问题是,加上这样的能
力,可能导至程序代码大小和执行效率都遭受不良波及-- 即使你只启动了一个执行
绪。
Visual C++ 的折衷方案是提供两种版本的C runtime 函式库。一种版本给单绪程序
使用,一种版本给多绪程序使用。多绪版本的重大改变是,第一,变量如errno 者
现在变成每个执行绪各拥有一个。第二,多绪版中的数据结构以同步机制加以保护。
Visual C++ 一共有六个C runtime 函式库产品供你选择:
Single-Threaded(static) libc.lib 898,826
Multithreaded(static) libcmt.lib 951,142
Multithreaded DLL msvcrt.lib 5,510,000
Debug Single-Threaded(static) libcd.lib 2,374,542
Debug Multithreaded(static)libcmtd.lib 2,949,190
Debug Multithreaded DLL msvcrtd.lib 803,418
Visual C++ 编译器提供下列选项,让我们决定使用哪一个C runtime 函式库:
/ML Single-Threaded(static)
/MT Multithreaded(static)
/MD Multithreaded DLL(dynamic import library)
/MLd Debug Single-Threaded(static)
/MTd Debug Multithreaded(static)
/MDd Debug Multithreaded DLL(dynamic import library)
shenghuafen 2003-07-31
  • 打赏
  • 举报
回复
rivershan,请教,在编译器选项中加入/MT是何意义呀。
rivershan 2003-07-31
  • 打赏
  • 举报
回复
编译器选项里加个/MT
lygfqy 2003-07-30
  • 打赏
  • 举报
回复
不是吧,我觉得应该是加入多线程编译就可以了吧
S.F. 2003-07-30
  • 打赏
  • 举报
回复
感谢,我试试,问题解决马上结帖
UDX协议 2003-07-30
  • 打赏
  • 举报
回复
是你的setting有问题。
设为use mfc就可以了。
S.F. 2003-07-30
  • 打赏
  • 举报
回复
我找到 _beginthreadex 函数是process.h的 ,stdafx.h 中已经加入了。
liu_aq 2003-07-30
  • 打赏
  • 举报
回复
学这个很麻烦,我也不会。希望大家都介绍一下
yywanghz 2003-07-30
  • 打赏
  • 举报
回复
Release与Debug中的SETTING是不一样的,你在Debug时修改的内容,也要体现到Release中。
是不是你在Debug时加入了某个库文件,而在Release时没有加入。GOOD LUCK!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧