vc6.0 修改mfc工程名vc++mfc中的错误,在线等

VC各种链接错的解决办法
1.nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
nafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
..\..\Output\Release/FirewallMan.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
解决办法:
PROJECT-&SETING-&C/C++-&PREPROCESSOR-&定义 _AFXDLL,完毕。
2.LINK : warning LNK4098: defaultlib &MSVCRT& conflicts wi use /NODEFAULTLIB:library
解决办法:
PROJECT-&SETING-&LINK-&INPUT-&IGNORE LIB...-&MSVCRT.LIB
3. 如果它提示:fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds
就这样改:
C/C++-&Code Generation-&Multithread DLL
&Linking...
&&&& nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
&&&& nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
&&&& libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main&
VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。选择菜单&Project|settings&,选择C/C++标签,在CODE GENERATION分类中选择除SINGLE-THREADED的其他选择。
1. 解决error LNK2005: ___crtExitProcess 已经在 LIBCMTD.lib(crt0dat.obj) 中定义
有的r候, 在 Debug 模式下g]}, Q到 Release 模式就l生一堆}.
典型的例子, 就是因 c++ runtime library O定不同, 所造成的重}定xBYe`.
而另一常的例子是 0概c library 使用不同的字元集合O定
(如: 一用 Unicode Character Set, 另一用 Multi-Byte Character Set)
l生原因, 有可能是
1. 你 link 的 lib 使用 C++ Multi-threaded DLL (/MD)
2. 而你的 source 使用的 C++ runtime library 是 Multi-threaded (/MT)
е轮匮}定x
使用相同的 C++ runtime library.
例如都使用 static 的 Multi-threaded (/MT).
2. 错误 1 error LNK2005: &private: __thiscall type_info::type_info(class type_info const &)& () 已经在 LIBCMT.lib(typinfo.obj) 中定义 MSVCRTD.lib
项目 -& 属性 -& c/C++& -& 代码生成& -& 运行时库& 设置为: 多线程调试 DLL (/MDd)
被引用的库和调用的程序编译选项不同,需要改成一致后编译
3. #pragma once与 #ifndef的区别
为了避免同一个文件被include多次
1&& #ifndef方式
2&& #pragma once方式
在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。
&&& 方式一:
&&& #ifndef __SOMEFILE_H__
&&& #define __SOMEFILE_H__
&&& ... ... // 一些声明语句
&&& #endif
&&& 方式二:
&&& #pragma once
&&& ... ... // 一些声明语句
&&& #ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心&撞车&,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况
&&& #pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的&同一个文件&是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当然,相比宏名碰撞引发的&找不到声明&的问题,重复包含更容易被发现并修正。
&& 方式一由语言支持所以移植性好,方式二 可以避免名字冲突
4. error LNK2019: 无法解析的外部符号 __imp__PathCombineW
PathCombine是Shell api需要引入库
#pragma comment( lib, &shlwapi.lib&)
5.& error C2662: &MyClass::GetName()&: 不能将&this&指针从&const MyClass&转换为&MyClass &&
bool MyClass::operator==(const MyClass* n1) const
&return GetName() == n1-&GetName();
原因是不能在const函数中调用对象的非const方法,MyClass中的GetName()必须是const的。
6. template 模板
模板声明和定义必须在同一个文件中,而且只有实例话模板类型时才编译模板实例
7. error C2275: &MyClass&: 将此类型用作表达式非法 MyClass.Instance();
&原因:Instance是静态方法,用.引用会出错。应该是MyClass::Instance()
8. error LNK2019: 无法解析的外部符号 &public: __thiscall MyClass(void)
原因:只声明了构造函数,MyClass(); ,但未定义。 可以定义空函数,或者直接注释掉,使用默认构造函数。
9.& error C2504: &testing&: 未定义基类
class PackToolTest : testing.Test {}
原因:Test是testing命名空间下的一个类,需要用域操作符,testing::Test
还有一个问题,缺少基类继承权限(public、protected、private)
10. error C2864: &MyClass::_nullpack&: 只有静态常量整型数据成员才可以在类中初始化&
class MyClass {
&&&&& string _nullpack = &test&;
原因:c++ 中,成员变量不能在声明时初始化,而是在构造函数初始化列表中先初始化
11. error LNK2019: 无法解析的外部符号
int main()
原因:由于创建的是Win32 Project,和Win32 console Project的链接库不同
方法1:在程序最开始的地方加上以下语句
#pragma&& comment(linker,&& &/subsystem:console &)
方法2:project&& & &&& setting&& & &&& 在link&& 的project&& options&& 中将/subsystem:windows(console)删了
12.类似&已经在 msvcprtd.lib(MSVCP80D.dll) 中定义&问题
vs2005 Debug /Release需要分别配制
分析一下错误来源,会发现:
1.&&&& 错误来源主要是重复定义的问题,而且重复定义的基本上都是VC Runtime和Standard C++ Library中的函数
2.&&&& LIBCMT和LIBCPMT为Release下的Lib,本来不应该出现在Debug版本的链接的Lib中
3.&&&& 重复定义的问题主要出现在:LIBCMT, LIBCPMT, MSVCPRTD, MSVCRTD
来看看出问题的LIB是那些:
1.&&&& LIBCMT:C Runtime库的多线程静态链接的Release版本
2.&&&& LIBCPMT:C++ Standard Library的多线程静态链接的Release版本
3.&&&& MSVCPRTD:C++ Standard Library的多线程DLL的Debug版本
4.&&&& MSVCRTD:C Runtime Library的多线程DLL的Debug版本
当 前我们的配置是多线程DLL的Debug版,因此3和4是应该出现在link的列表中的,不属于多余。而后两者则是只是当多线程静态链接Release版 中才会出现。这提示我在项目中加入的ANTLR.LIB可能是造成这个问题的根源,因为静态库的编译选项很容易和主程序发生冲突,并且根据实际信息我们可 以看出ANTLR.LIB应该是用多线程静态链接的Release版本来编译的。
解决方法:
&& 1、首先查看编译项目依赖的其他项目的运行时库是否一致
&& 2、如果不一致,改为同样的运行时库,如在下编译的是:&多线程调试 DLL (/MDd)&,现在需要把所有的依赖项目的运行时库都改为一致的库,就OK了。
13.& error C2143: 语法错误 : 缺少&;&(在&*&的前面)
原因:产生错误处,某类型未include,可能头文件名拼写错误、头文件名已更改
14. error C2572: &MyClass::Invoke&: 重定义默认参数 : 参数 2
string MyClass::Invoke(const CParam& paraObj, INVOKETYPE type = ASYN)
原因:默认参数,只需在声明时指定。方法定义的时候无需指定默认参数。
string MyClass::Invoke(const CParam& paraObj, INVOKETYPE type /*= ASYN*/)
15. 错误 C2558 没有可用的复制构造函数或复制构造函数声明为&explicit&
试图复制其复制构造函数为 private 的类。在大多数情况下,不应复制具有 private 复制构造函数的类。通用技术声明 private 复制构造函数以防止直接使用类。该类本身可能无用,或需要另一个类才能正常工作。
尝试复制其复制构造函数为 explicit 的类。用 explicit 声明复制构造函数会阻止将类的对象传递到函数或从函数返回类的对象。
原因: 拷贝构造函数、赋值函数参数必须用const修饰
16. 不能创建抽象类对象
原因: 1. 存在虚函数未实现; 2. 由于疏忽重载虚函数格式错误(此问题需要仔细检查才能发现); 3. 虚函数名称与中已有的虚函数重名,导致重载失败(这点很纳闷)。
17. 没有找到MSCRV80D.dll
工程属性: 配置类型 由 exe 改成 lib 后生成, 然后再改回来
运行时会出现 &没有找到MSCRV80D.dll& 的异常
解决方法:
工程属性:MFC的使用 由 &使用标准Windows库& 改成 &在静态库中使用MFC& 生成 ,然后再改回来
生成、运行 OK
18. CVTRES : fatal error CVT1100: 重复的资源。type:MANIFEST, name:1, language:0x0409
另一个则提示为:
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
已经到了链接期,应该说,问题就不像编译通不过那么别扭了,而查阅MSDN关于这两个问题的说明,终于找到了解决的方法,现简单的陈述如下:
首先,出现这两个问题的原因都是一个,即文件中的现有资源文件和新资源字符串表 ID 冲突。微软也给出了解决这个问题的方法,但是,在现有的情况下,这个方法是靠不住的,因为,不可能不使用wx.rc资源。所以,一个变通的解决方法就是:
工程属性-&配置属性-& 清单工具-&输入和输出-&嵌入清单,选择[否],即可。&
摘自& kafeiwuzhuren的专栏&
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'VC++ 中MFC出现这种异常该怎么处理?
&来源:读书人网&【读书人网():综合教育门户网站】
VC++ 中MFC出现这种错误该怎么办??---------------Configuration: 计算器1 - Win32 Debug----------------
VC++ 中MFC出现这种错误该怎么办??---------------Configuration: 计算器1 - Win32 Debug--------------------Compiling...jisuanqi.cppc:\users\lenovo\documents\c++\计算器1\jisuanqi.h(21) : error C2065: '_UNKNOWN_RESOURCE_ID_' : undeclared identifierc:\users\lenovo\documents\c++\计算器1\jisuanqi.h(21) : error C2057: expected constant expression执行 cl.exe 时出错.计算器1.exe - 1 error(s), 0 warning(s)[解决办法]未定义标示符常量异常[解决办法]某资源的ID丢失了,检查Resource.h文件,添加资源的ID[解决办法]缺少常量 _UNKNOWN_RESOURCE_ID_ 的定义一般情况下包含 resource.h 文件[解决办法]全局搜索,_UNKNOWN_RESOURCE_ID_哪里定义的[解决办法]删除东西没删干净吧[解决办法]RES下的某些资源文件被删除了一个编辑框,我现在想控制输入,只接受数字和‘+’。我在属性里面设置了只接受数字,但是输入‘+’的时候也输不进去了,请问这个问题该怎么解决啊。说一下方法,给个链接都可以,求帮助
回复讨论(解决方案)
在OnChar&或&OnUniChar中去判断数字,+,退格
对了,记得屏蔽右键菜单,然后试试ctrl&c&这些快捷键还能不能用
重载CEdit类,在重载的CMyEdit类中添加WM_CHAR消息。
void&CMyEdit::OnChar(UINT&nChar,&UINT&nRepCnt,&UINT&nFlags)
&&&&switch(nChar)
&&&&&&&&case&'1':
&&&&&&&&case&'2':
&&&&&&&&&&&.
&&&&&&&&&&&.
&&&&&&&&&&&.
&&&&&&&&case&'+':
&&&&&&&&case&VK_BACK:
&&&&&&&&&&&&
&&&&&&&&default:
&&&&&&&&&&&&return&;
&&&&CEdit::OnChar(nChar,&nRepCnt,&nFlags);
就可以实现你想要的功能,这只是一个例子,自己可以去完善。
BOOL&CColorEdit::PreTranslateMessage(MSG*&pMsg)&
if((WM_KEYDOWN&==&pMsg-&message)&&&(pMsg-&wParam==VK_RETURN))
::SendMessage(GetParent()-&GetSafeHwnd(),&
&&&&&&&&&&WM_COLOREDIT_RETURN,&
&&(LPARAM)this-&GetDlgCtrlID());
// return&TRUE;
return&CEdit::PreTranslateMessage(pMsg);
我这个限制了只能输入数字,现在想让它输入‘+’,怎么改一下啊
可以编辑框设置为字符串CString类型的,有输入的时候读取进行判断
用2楼的方式。。。这个是自定义类,继承CEdit君,已阅读到文档的结尾了呢~~
关于对话框中显示数据的问题&#..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
关于对话框中显示数据的问题-VC-MFC-界面
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 vc6.0 mfc实例教程 的文章

 

随机推荐