InvalidAddressspecifiedtoRtlValidateHeap invalid ipv6 address

Invalid Address specified to RtlValidateHeap

VC编程,最后推出对话框的时候,会有错误提示声音“硄”,但是没有弹出错误提示对话框,症状描述与下面的类似:

声音就和AssertionFailure一样,但是什么框框都没弹出来,最后Output窗口中显示has exited with code 3(0x3).http://topic.csdn.net/u/20080924/20/d9347148-61fd-40d5-a892-0879dbae1815.html

单步调试,在程序退出的地方OnDestroy()函数内设置断点,发现错误:InvalidAddress specified to RtlValidateHeap……

查找原因,发现是,在不同模块(工程)之间传递 C++类,而这两个模块用了不同的运行时库(Runtime Library)设置。

修改:Project->Setting->General->MicrosoftFoundation Classes:Use MFC in a Static Library.

因为Win32 Debug,C/C++选项的Category中对应的CodeGeneration选项,选择了Use run-time library:Debug MultithreadedDLL,对应的Win32Release选择了MultithreadedDLL。使用了动态库,与前面的静态库不符合。引起错误。修改Microsoft Foundation Classes:Use MFCin a Shared Dll。重新编译程序,没有在出现错误的声音。

参考:http://blog.csdn.net/bao_qibiao/article/details/5257150

一.首先是”Invalid Address specified toRtlValidateHeap “

找到了这篇文章:http://hi.baidu.com/umu618/blog/item/d4e8242e424e3e564fc226d3.html

“一个可能的原因:在不同模块(工程)之间传递 C++ 类,而这两个模块用了不同的运行时库(RuntimeLibrary)设置。例如:EXE 模块调用 DLL 模块里传递 C++ 类的函数,但 DLL 模块使用静态链接(Release 是Multi-threaded (/MT) 、Debug 是Multi-threaded Debug (/MTd))方式编译,而 EXE 模块使用动态链接(Release 是 Multi-threaded DLL (/MD) 、Debug 是Multi-threaded Debug DLL (/MDd))方式编译。

  可以对比这两个模块的工程属性 - C/C++ - CodeGeneration - Runtime Library ,看看设置是否一样,如果不一样要改成一样的。“

二.把我的exe工程属性改成和dll一样的Multi-threadedDebug DLL (/MDd)后,

出现nafxcwd.lib(appcore.obj) : error LNK2001:unresolved external symbol ___argv

找到这篇文章:http://blog.csdn.net/pbdwadr/archive/2007/09/07/1775675.aspx,如下:

”1.【错误提示】: libcmtd.lib(crt0.obj) : error LNK2001: unresolvedexternal symbol_main
【说明】: Windows项目要使用Windows子系统, 而不是Console
【解决方法】:[Project]--> [Settings] --> 选择"Link"属性页,
在ProjectOptions中将/subsystem:console改成/subsystem:windows


2.【错误提示】:LIBCD.lib(wincrt0.obj) :error LNK2001: unresolved external symbol_WinMain@16
【说明】:控制台项目要使用Console子系统, 而不是Windows
【解决方法】:[Project]--> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:windows改成/subsystem:console


3. 【错误提示】:msvcrtd.lib(crtexew.obj) :error LNK2001: unresolved external symbol_WinMain@16
【说明】:通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口
【解决方法】:[Project] --> [Settings] -->选择"C/C++"属性页,
在Category中选择Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4. 【错误提示】: nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved externalsymbol __endthreadex
【说明】:这是因为MFC要使用多线程时库【解决方法】:[Project]--> [Settings] -->选择"C/C++"属性页,
在Category中选择Code Generation,
再在Use run-time library中选择Debug Multithreaded或者multithreaded
其中,
Single-Threaded单线程静态链接库(release版本)
Multithreaded 多线程静态链接库(release版本)
multithreaded DLL 多线程动态链接库(release版本)
Debug Single-Threaded 单线程静态链接库(debug版本)
Debug Multithreaded 多线程静态链接库(debug版本)
Debug Multithreaded DLL 多线程动态链接库(debug版本)
单线程: 不需要多线程调用时, 多用在DOS环境下
多线程: 可以并发运行
静态库: 直接将库与程序Link, 可以脱离MFC库运行
动态库: 需要相应的DLL动态库, 程序才能运行
release版本: 正式发布时使用
debug版本: 调试阶段使用
5. 【错误提示】: Compiling... ,Error spawningcl.exe【说明】:这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录/VC98/Bin”下面,你可以到相应的路径下找到这个应用程序。
【解决方法】:“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、SourceFiles”的路径。6. 【错误提示】: nafxcw.lib(appcore.obj) : errorLNK2001: unresolved external symbol ___argv
【说明】:【解决方法】:在Preprocessor中定义_AFXDLL7. 【错误提示】:fatal error C1189: #error :Please use the /MD switch for _AFXDLLbuilds【说明】:【解决方法】:/C++->CodeGeneration->Multithread DLL (即实现/MD选项)“按照方法6解决
三.一个相关的问题 nafxcwd.lib(dllmodul.obj) : error LNK2005:_DllMain@12 already defined in utility.obj几种解决方法:(以前的笔记,忘记其中的一些原帖了)1.
InvalidAddressspecifiedtoRtlValidateHeap invalid ipv6 address

你只需要在工程设置里面,把

WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXPORTS,_WINDLL,_AFXDLL

中的_USRDLL,删除,就可以正确编译了

另一种描述

nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 alreadydefined
google半天没搞定
只好自己搞,最后将工程里面的_USRDLL宏定义去除,瞎猫碰到死耗子了,好了。

在afx.h中发现一段代码
#ifdef _USRDLL
#pragma comment(linker, "/include:__afxForceUSRDLL")
#endif
就我现在的水平,没看懂,留着以后慢慢看吧,呵呵!

2.Linker Tools Error LNK2005 symbol already defined in object
The given symbol, displayed in its decorated form, was multiply defined.
Tips
One of the following may be a cause:
The most common cause of this error is accidentally linking with both the single-threaded and multithreaded libraries. Ensure that the application project file includes only the appropriate libraries and that any third-party libraries have appropriately created single-threaded or multithreaded versions.

The given symbol was a packaged function (created by compiling with /Gy) and was included in more than one file but was changed between compilations. Recompile all files that include the symbol.
The given symbol was defined differently in two member objects in different libraries, and both member objects were used.

An absolute was defined twice, with a different value in each definition.

Linker Tools Error LNK1169 one or more multiply defined symbols found

The build failed due to multiple definitions of one or more symbols. This error is preceded by error LNK2005.

The /FORCE or /FORCE:MULTIPLE option overrides this error.
4.官方解决方案:http://support.microsoft.com/kb/148652/zh-cn

在 Visual C++ 中以错误的顺序链接 CRT 库和 MFC 库时出现 LNK2005错误


  

爱华网本文地址 » http://www.aihuau.com/a/25101015/254123.html

更多阅读

IPv6的安装方法 如何安装ipv6协议

下一代互联网将基于IPV6协议来分配地址,下面结合本人亲身操作来分享WINDOWS XP系统的IPV6安装方法。IPv6的安装方法——工具/原料安装有XP系统的电脑一台IPv6的安装方法——步骤/方法IPv6的安装方

excel函数实例教程:7 ADDRESS函数使用方法

excel函数实例教程:[7]ADDRESS函数使用方法——简介ADDRESS函数由于以文本方式实现对某一单元格的引用,合理的使用该函数,可实现更加灵活的单元格引用。下面小编就为大家讲解一下该函数的具体使用方法。excel函数实例教程:[7]ADDRESS函

ipv6无网络访问权限怎么办 ipv4 ipv6无网络权限

ipv6无网络访问权限怎么办——简介有时IP4和IP6都正常连接,但突然又出现“IPV6无网络访问权限” 这是Win7系统下经常发生的事情,如下图。ipv6无网络访问权限怎么办——方法/步骤

怎样安装IPV6互联网协议 ipv6协议下载安装

现有的IPV4只支持大概40亿(2的32次方)个网络地址,已经用完。IPV6启动势在必行。而且,现在网络上也出现了很多基于IPV6的网络资源,比如,六维空间、IPV6之家等。然而对于有些用户,IPV6还是新东西。所以,在这里,作者手把手的教怎样安装IPV6。怎

IPv6设置方法 win10如何设置ipv6

IPv6设置方法——简介IPv6(Internet Protocol Version 6)是IETF(互联网工程任务组)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。随着IPv4资源的急剧紧缺,相信在不久的

声明:《InvalidAddressspecifiedtoRtlValidateHeap invalid ipv6 address》为网友雨晨的清风分享!如侵犯到您的合法权益请联系我们删除