犯过的错
来源:互联网 发布:非关系数据库有哪些 编辑:程序博客网 时间:2024/04/28 22:30
6.以lib加.h方式使用DLL时,使用的文件和dll自己的文件不是同一份,我在.h中添加了一个成员变量,以为不需要对使用的文件进行同步,结果发现这是错的,只要dll这边的导出函数或是导出类的内存结构发生了变化就必须同步.h和.lib,当然如果你所加的变量是放在导出类的最后,可能暂时不会出问题,但如果仔细看每个变量的地址就会发现,是错的! 针对需要同步.h和lib的dll使用解决方案:在Post-Build Event中把生成的lib和.h复制到对应的目录(用vc8的话可以用$(TargetDir))copy $(TargetDir)/somedlg.lib ../anotherDir/somedlg.lib;
5.在循环体中使用A2W之类的宏来转换字符串,因为这一类宏中分配的内存是在函数体内有效的,所以在循环次数比较多时就会出现栈溢出!!可以改成CComBSTR等在堆上分配内存的函数,或及时释放内存。
4.在加锁的函数体中间用了return而没有解锁。
推荐的做法是用goto
3.在使用VC包装的智能指针类时,将m_spXXX = NULL;然后再去调用m_spXXX.CreateInstance(...)出错.
呵呵,把指针设成NULL了,他又怎么可能创建成功我想要的东西呢.+_+
2.在定义接口时,对参数类型为字符串的没有加上[string]说明,导致在unicode下编辑出来的类型是unsigned short类型,如果实现接口时的参数用WCHAR就会出问题,编译不过。正确的使用方法:
[helpstring("方法 DrawText")]
HRESULT DrawText([in, string] WCHAR* pwszText, [out, retval] DWORD* pdwRet);
实现时:
STDMETHOD(raw_DrawText) (WCHAR* pwszText, DWORD* pdwRet);
1.用ResetEvent来替换SetEvent导致死锁 2008.01.02
- 犯过的错
- LaTex犯过的错
- Android学习犯过的错
- 那些年犯过的错
- 那些年我犯过的错
- 犯过的错误
- 犯过的错误
- 犯过的错误
- 犯过的bug
- 犯过的错误
- ..多年来,犯过很多错
- 那些年犯过的错:传参传的到底是什么
- [干货分享] 反省我十年开发犯过的错
- 反省我十年开发犯过的错
- 反省我十年开发犯过的错-致程序员
- 反省我十年开发犯过的错
- Keil环境,在调试STM32中犯过的错
- 总结2017年工作中犯过的错
- Linux操作系统下的多线程编程详细解析
- [学习笔记]小型论坛功能——实现按照指定每页的行数来分页显示记录[3]
- Apache.org改版了
- 实习的第二天
- 无法访问windows安装服务
- 犯过的错
- Free Access to KAV/KIS 6.0/7.0
- 六十五个超级经典小故事
- 在Vista下注册服务
- 接口指针使用时:Unhandled exception ... Stack overflow
- 实现一个制作签名的小软件
- GetModuleHandle“找不到指定的模块”
- 获取外网IP
- hao123