• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错

奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错
描述:

这两天在写一个组件,是个DLL,不支持MFC,我想要产生随机数,用了rand()这个函数,在Debug模式下一切OK,但是我使用Release模式时确出错了,
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseMinSize/Calc.dll : fatal error LNK1120: 1 unresolved externals
说是无法解析这个外部标识,
我查了一下MSDN,发现rand()是在stdlib.h中声明的,我把这个文件包含进来还是出错,
MSDN中关于rand()函数还有这个说明:
Libraries
All versions of the C run-time libraries.
这是不是说使用这个函数需要C run-time libraries?有什么帮助没有。
各位大侠,有什么办法解决这个问题,怎样在ATL使用产生随机数的函数啊?


解决方案1:

将Project   Release设置中的预定义_ATL_MIN_CRT去掉就可以了 
原因
在使用 ATL 时,您可能希望达到的两个目标是: 
最大限度地减小图像的大小 
最大限度地减少对运行时 DLL 的依赖 
然而,可能需要利用 CRT 提供的某些函数。由于静态链接会增加图像大小,而动态链接使您依赖于运行时 DLL,因此使用 CRT 可能使您达不到这些使用 ATL 的主要目标。
为了帮助解决这个两难局面,ATL 提供了一个解决方案,即 _ATL_MIN_CRT 宏。通过将常规属性选项“在 ATL 中最小使用 CRT”设置为“是”可激活 _ATL_MIN_CRT 宏,这个宏为许多本来需要 CRT 启动代码的公共 CRT 函数提供了替换实现。
记住,使用 _ATL_MIN_CRT 宏并不能保证不需要 CRT 函数。如果使用的函数需要 CRT 启动代码才能正常运行,则将得到下列链接器错误:
LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main
提供自己的 _main 实现并不能解决这个问题:必须消除对需要 CRT 启动代码的函数的依赖,或者必须在图像中静态链接启动代码或动态链接到 CRT。

解决方案2:

这个问题跟 rand() 函数无关,相信是工程设置问题。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 奇怪的问题为什么我更新了控件,可是我原来的应该程序没有办法看到新的方法?
  • 奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错
  • 奇怪的问题,ATL开发COM组件时如何产生随机数,用rand在Release模式下出错

相关文章

  • 2017-06-05 启动一个exe运行TCP监听,并且接收连接传来的数据,可以传给其他exe吗?
  • 2017-06-04 如何在一个BHO程序中调用MFCDLL?
  • 2017-06-05 CString用来转换一个decimal,为什么得到一个奇怪的值?
  • 2017-06-05 如何在VisualC++中调用C语言编写的线程函数?
  • 2017-06-04 为什么我的组件注册失败?returncode0x8007007e
  • 2017-06-05 推荐一个检查COM接口信息的方法和代码
  • 2017-06-05 ---到底用的什么函数绘制?
  • 2017-06-04 推荐一些讲ActiveX控件编写的书或资料吧
  • 2017-06-05 WebBrowser中打开新页面,session丢失,如何解决,求助。。。
  • 2017-06-04 微软自带的控件,在VC的对话框编辑器中和实际运行时表现效果为什么不一样啊?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 请教一个用vc填写word表格的问题
    • 创建线程,传递窗口句柄问题出在哪了?
    • 求用VS2010写的ATLactivex控件实例代码
    • OCX控件导入成功,但是调用其中的函数则出现错误,急救~~!
    • WINDOWS关机的指令是哪条
    • MFC输出文本的宽度控制问题
    • 关于CAtlRegExp使用上的一点疑问
    • ntservice形态的automation(dcom)需要注意哪些地方?
    • CList作为dll的输出函数的一个参数传入,在输出函数中申请节点的空间,可不可以?为什么我的在外面使用节点报错?
    • 做静态库时,怎么设置接口输出?以便于其他程序引用?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有