VS2005 学习记录3-移植处理

点滴记录学习VS2005过程所遇到的问题,及解决方法

1.将EVC4的工程转化成.net2005时要将工程的属性中的c/c++->代码生成->运行时库改为:多线程DLL(/MD)

2.在工程的属性中的链接器->高级->入口点改为:WinMainCRTStartup

3.WINVER      not      defined.      Defaulting      to      0x0501,问题原因:在工程的属性c/c++->预处理器->预处理器定义中加上_WIN32_WINNT=0x500试试

1.Error:uafxcwd.lib的处理

VS2005 CE6.0编程, 写一个LIB给应用调用

在应用调用LIB时产生错误, 信息详细信息:uafxcwd.lib(afxinl1.obj) : error LNK2005: "public: virtual void __cdecl CObject::Serialize(class CArchive &)" ([email protected]@@[email protected]@@Z) 已经在 mfc80ud.lib(MFC80UD.DLL) 中定义

错误原因:工程和LIB的编译选项要一致。

包括字符集 Unicode, Multi-Byte...  运行库    MDD, MTD ...

产生此次错误的具体原因是:工程和LIB在设置中的“常规”/MFC的使用 项,选择不一致,导致此错误。

2.关闭 C4996 警告

例如:warning C4996: strncpy was declared deprecated

办法是在编译选项 C/C++ | Preprocessor | Preprocessor Definitions中,增加_CRT_SECURE_NO_DEPRECATE

也可以使用以下方法:

#pragma   warning(disable:4996)   //全部关掉 #pragma   warning(once:4996)      //仅显示一个

3.如果出现以下错误:

_CE_ACTIVEX was not defined because this Windows CE SDK does not have DCOM. _CE_ACTIVEX could be caused to be defined by defining _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA, but it is recommended that this be done only for single-threaded apps. _ATL_NO_HOSTING was defined because _CE_ACTIVEX was not defined.

解决方法:在stdafx.h文件里加上#define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA

4.若出现以下错误:

fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds

解决方法:右击工程名,打开Project properties对话框,切换到C/C++->Code generation页,将Runtime Libarary 设置成“Multi-threaded DLL(/MD)”,即可解决此问题

5.若出现以下错误:

error C2664: ‘_wcsnicmp‘ : cannot convert parameter 2 from ‘LPWORD‘ to ‘const wchar_t *‘

解决方法:强制类型转换

6.若出现错误:

error C2065: ‘i‘ : undeclared identifier

原因分析:对于evc离开循环后,循环变量仍然有效,并且仍可以使用,但是在VS2005下是不行的,由此可见VS2005对变量的定义与审查更为严格,还有就是对数组越界问题也比EVC来的强。

解决方法:

int i = 0;

for (i = 0; i < MAX_LEN; i ++)

{

}

for (i = 0; i < MAX_NUM; i ++)

{

}

7.若出现以下错误:

error C2146: syntax error : missing ‘;‘ before identifier ‘m_wndCommandBar‘

原因分析:在Windows Mobile 5.0/6.0 下CCeCommandBar类被CCommandBar替换

解决方法:用CCommandBar     m_wndCommandBar;代替CCeCommandBar     m_wndCommandBar;

8.若出现以下错误:

error C2061: syntax error : identifier ‘HELPINFO‘ 或 ‘ON_WM_HELPINFO‘

解决方法:增加HELPINFO的类型,增加头文件HelpInfo.h

9.若出现以下错误:

error C2664: ‘CSize CDC::GetTextExtent(LPCTSTR,int) const‘ : cannot convert parameter 1 from ‘WORD *‘ to ‘LPCTSTR‘ Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast需要强制转换

解决方法:强制转换,例如使用pDC->GetTextExtent((LPCTSTR)&i, 1).cx;

10.如果出现以下错误:

error C2039: ‘OnHelpInfo‘ : is not a member of ‘CView‘ error C2039: ‘OnHelpInfo‘ : is not a member of ‘CFrameWnd‘ error C2039: ‘OnHelpInfo‘ : is not a member of ‘CDialog‘

解决方法:用TRUE替换相应的类成员函数OnHelpInfo,即用return TRUE;代替return CView::OnHelpInfo(pHelpInfo);

11.如果出现以下错误:

error C2039: ‘m_bShowSharedNewButton‘ : is not a member of ‘CCommandBar‘ D:Program FilesMicrosoft Visual Studio 8VCceatlmfcincludeafxext.h(557) : see declaration of ‘CCommandBar‘

解决方法:直接注释掉 m_wndCommandBar.m_bShowSharedNewButton = FALSE;

12.fatal error RC1015: cannot open include file Mobile.rc‘.

解决方法:直接注释掉:#include "wceres.rc"           // WCE-specific components

或 从属性页中的“资源”/“资源文件名”从删除RC文件

13.若在Resease 模式下出现以下错误:

error LNK2019: unresolved external symbol SHInitExtraControls referenced in function "protected: __cdecl CMyAppView::CMyAppView(void)" (   [email protected]@[email protected])

原因分析:程序中调用了SHInitExtraControls();

error LNK2019: unresolved external symbol SHSipPreference referenced in function "protected: void __cdecl CMyAppView::OnKillfocusWord(void)" ([email protected]@@IAAXXZ)

问题:程序中调用了SHSipPreference

以上两个函数都在:Library: aygshell.lib里

解决方法:工程-->属性-->Linker -->input -- > Additional Denpendencies :aygshell.lib

14.若出现以下错误:

orelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup

解决方法:属性—〉Linker—〉Anvanced—〉EntryPoint 将 wWinMainCRTStartup 更改为 WinMainCRTStartup,Entry Point是WinMainCRTStartup(ANSI)或wWinMainCRTStartup(UINCODE),即: ... WinMainCRTStartup 或wWinMainCRTStartup 会调用WinMain 或wWinMain。

15.若出现以下错误:

error C3861: ‘LoadStdProfileSettings‘: identifier not found

解决方法:注释掉函数 LoadStdProfileSettings;

时间: 2025-01-05 00:00:55

VS2005 学习记录3-移植处理的相关文章

VS2005 学习记录

关于错误:绑定句柄无效 编译单个应用时没有出现此问题. 但是在编译一个调用了自己写的DLL程序时,出现如题的错误揭示. 解决方式:在应用项目上,单击右键:选择“属性”,出现项目属性对话框:选择“调试”属性页,取消“启动 Visaul Studio 宿主进程(O)”前面的复选框.

开源项目Material Calendar View 学习记录 (一)

开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview README.md 中文翻译: Material Calendar View将Android CalendarView 的Material Design风格向后移植.其目标是拥有Material的视觉和使用效果,而不是完全依赖于平台的实现. 0.8.0版本的主要变更 此视图现在对布局参数的响应更好

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

Python学习记录-2016-11-29

今日学习记录: 心灵鸡汤: 要有合适自己的目标,一个目标一个目标实现,切忌好高骛远: 最好的投资就是投资自己: 实现梦想 学习,学习,再学习: Talk is cheap. 从本身而言,余三十而立之年,从事测试行业7七年有余,一年半华为外包路由器,两年无线wifi测试,一年半网管软件测试,一年自动化测试经理,推行公司自动化测试进程,从开始的TCL,到现在的python,工欲善其事必先利其器,所以自己来学习,总体我认为我的目标是一直前进的,不断变化的,但是方向并没有大的错误,有些累,所以近期有些懈

程序的机械级表示学习记录

程序的机械级表示学习记录 X86的三代寻址方式 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全. 8086的分段模式. IA32的带保护模式的平坦模式. 对于机械级编程的两种重要抽象 ISA:机械级程序的格式和行为,定义为指令集体系结构,它定义了处理器状态.指令的格式,以及每条指令对状态的影响. 虚拟地址:机器级程序使用的存储器地址,提供的存储器模型看上去是一个非常大的数组.存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来的. 在GCC中获得汇编代码与反汇编 获得汇编代码: