数据诊断VC++错误解析

1.含有指针的成员结构体内存释放问题总结

在结构体中含有指针的成员 在给结构体分配内存时,需要通过计算这些成员变量总共占多少内存 给与分配,如果少了会出现释放出错 ,并且在赋值是需与成员变量顺序一一对应。

 

2. vb调用vc dll 提示文件未找到 error 53

 

 

您的DLL文件可能还依赖于某些其它文件,

如一些C/C++的运行库。如果DLL的某些依赖文件找不到,它也可能报这个错。 

 

 

3. VB的结构体的值传到VC dll里注意事项

 

(1).VB中的结构体成员变量的定义一定要和VC中的定义一一对应 不然传值会出现错误。

(2).返回VC中运行的结果(存于一结构体中),VB在取结果时需注意内存空间的对应。 vc的字符串是以/0结尾的。

 

4. VB和VC汉字码的转换(前提:VB中以字节数组存储从VC中返回的汉字信息,如果VB中式字符串,则无此问题,直接就可以返回汉字字符串)

 

VC的汉字显示是用GB码,而汉字字符串在VB中式用UNICODE码

所以VC有汉字返回的结果字符串需要转换为UNICODE码,才能在VB中正常显示,只需要调用API:StrConv

例如:

结构体定义:

'结构体定义: Public Type h_RTUDATAALY cPhoneValue(20) As Byte cRtuInfo(20) As Byte cGPRS(10) As Byte End Type strPhoneValue = StrConv(RtuData.cPhoneValue, vbUnicode) ' GB码转UNICODE码

 

 

另一种情况无需转换:

例如:Dim strResult As String * 20 记住得定义长度 对应VC的char*,另外说明:对char* 的赋值得用strcpy

 

 

5. 关于日志文件的存储

如果需要存在当前目录,若无此目录,先需创建目录 然后再在创建文件,VC的相对路径表示法:./Log/2.txt 当前目录 ../LOG/2.TXT 当前目录的上级目录.

例如:

CFile myFile; CreateDirectory("Log",NULL); // 在当前目录 创建文件夹 myFile.Open("./Log/2.txt",CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate); // 如果不存在 则创建 

6. 关于CTime和CString的互转

CString->CTime: CTime tmDateStart(atoi(strDate.Mid(0,4)),atoi(strDate.Mid(4,2)),atoi(strDate.Mid(6,2)),0,0,0); // 开始时间 CTime->CString: strDate = tmTemp.Format("%Y-%m-%d"); 

 

7.vc++中获取当前目录

//****************************************************// // 函数描述: 获取当前路径 // 参数: // 返回值: // 作者: // 时间:2010.04.16 //***************************************************// CString CShareFun::funGetPath() { CString g_szCurPath; //获取当前路径 CString szCurPath(""); GetModuleFileName(NULL,szCurPath.GetBuffer(MAX_PATH),MAX_PATH); szCurPath.ReleaseBuffer(); g_szCurPath = szCurPath.Left(szCurPath.ReverseFind('//') + 1); return g_szCurPath; } 8. CString和char* 转换 CString->char*: char* = (LPSTR)(LPCSTR)CString; char*->CString: CString= char*  

你可能感兴趣的:(null,dll,Path,vb,vc++,byte)