C#和C++编程学习中的个案小总结—— 时刻更新ing

来源:互联网 发布:千牛淘宝卖家选择代销 编辑:程序博客网 时间:2024/05/21 17:11

一、error PRJ0003 : 生成 cmd.exe 时出错

Visual Studio 2005调试程序时老是提示"生成“cmd.exe”时出错".

------ 已启动生成: 项目: bstore, 配置: Debug Win32 ------
正在编译资源清单...
正在链接...
正在嵌入清单...
项目 : error PRJ0003 : 生成“cmd.exe”时出错。
生成日志保存在“file://e:\来自C盘\我的文档\Visual Studio 2005

\Projects\bstore\bstore\Debug\BuildLog.htm”
first - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

直接Visual Studio 2005中进行如下设置:

tools= >   Options   = >   Projects   and   Solutions   - >   VC++   Directories   page  

把$(PATH)改成:$(SystemRoot)\System32;$(SystemRoot) ;$(SystemRoot)\System32\wbem

------ 已启动生成: 项目: bstore, 配置: Debug Win32 ------
正在嵌入清单...
生成日志保存在“file://e:\来自C盘\我的文档\Visual Studio 2005

\Projects\bstore\bstore\Debug\BuildLog.htm”
0727 - 0 个错误,0 个警告
========== 生成: 1 已成功, 0 已失败, 0 最新, 0 已跳过 ==========

二、加载库文件

 

右击红色笔圈住的项目名,点击“属性”后显示如下图:

 

在“链接器---输入--附加依赖项”中添加lib文件名称,点击“确定”。

三、cin,cout的头文件在VS2005中就必须写上#include<iostream>

下述三句都是必须的:  

#include<windows.h>          

#include "iostream"
using namespace std;

 

 四、VS2005中加载动态链接库(C++语言)

        目前正在学习动态库编程,学习网址有:
        (1)、http://www.cnblogs.com/beer/archive/2010/08/19/1803560.html
        (2)、http://wenku.baidu.com/view/025ec332b90d6c85ec3ac656.html
        (3)、http://bbs.pfan.cn/showtxt.asp?id=289651
        (4)、http://dev.yesky.com/283/2640283_2.shtml
 
1、在利用loadlibrary显示装载某动态库的时候,代码如下: HINSTANCE hDLL = LoadLibrary("MyClient.dll");
      编译器报错: error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'const char [13]' to 'LPCWSTR'
2、我将代码改为:HINSTANCE hDLL = LoadLibrary(LPCWSTR("MyClient.dll"));
      结果hDll显示为零,表明加载不成功。
3、再将代码改为: HINSTANCE hDLL = LoadLibrary(TEXT("MyClient.dll"));
      结果hDll不为零,加载成功。
4、还可以将代码改为:HINSTANCE  hDLL = LoadLibraryA("TZClient.dll");
     结果hDll不为零,加载成功。
5、还可以将代码改为:HINSTANCE   hDLL = LoadLibraryW(_T("TZClient.dll"));
     结果hDll不为零,加载成功。
 
备注:
1、LoadLibraryA使用LPCSTR 作为参数类型,它即为窄字符串(A代表ANSI)
2、LoadLibraryW使用LPCWSTR 作为参数类型,它即为宽字符串(W代表WIDEN)
3、dll文件必须在项目的debug目录下,否则dll加载不会成功。
4、Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。
五、#region与#endregion

region表示代码段的开始,与之相对的是#endregion,需成对出现。

#region与#endregion之间的代码可以折叠或打开^_^。

这样就可以给调试的不同阶段的代码屏蔽与阅读带来极大的方便!例如将某个已被替换的功能模块或函数折叠起来,这样不会占位置,以后需要的时候还可以参考!

六、怎样理解下述语句(C#)

byte[] cmd = new byte[16];

short type = 1;

int port = ((IPEndPoint)mListener.LocalEndpoint).Port;

BitConverter.GetBytes(type).CopyTo(cmd, 0);

BitConverter.GetBytes(port).CopyTo(cmd, 2);

正解:将type转换成字节数组,然后从字节数组的第0个索引开始copy到cmd变量中;将port转换成字节数组,然后从字节数组的第2个索引开始copy到cmd变量中。

原创粉丝点击