一些错误

本文解决了C++编程中常见的几个问题,包括禁止CObject拷贝构造和赋值操作、解决LNK2005错误的方法及调整VS2010中消息映射函数返回类型的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.cannot access private member declared in class 'CObject'

private:   
  CObject(const   CObject&   objectSrc);                             //   no   implementation   
  void   operator=(const   CObject&   objectSrc);               //   no   implementation   
    
  上面的CObject的源码,这样写是不允许对CObject做拷贝构造和赋值操作   
  应该是你的派生类用到了拷贝构造或赋值的操作,但没有实现相应的函数,于是编译器自动生成的代码会调用到基类,也就是CObject的相应函数,才出现这个问题   
  解决方法是为相应的派生类实现这两个操作   
  或者是避免对派生类的拷贝构造或赋值操作


2.当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误之一:

nafxcwd.lib(afxmem.obj) :error LNK2005:
"void * __cdecl operator new(unsigned int)"(??2@YAPAXI@Z) already
defined in LIBCMTD.lib(new.obj)
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined
in LIBCMTD.lib(dbgnew.obj)
nafxcwd.lib(afxmem.obj) :error LNK2005:
"void * __cdecl operator new(unsigned int,int,char const *,int)"
(??2@YAPAXIHPBDH@Z) already defined in LIBCMTD.lib(dbgnew.obj)
mfcs40d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
MSVCRTD.LIB (dllmain.obj)
mfcs42d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
msvcrtd.lib(dllmain.obj)

原因是 CRT 库对 newdelete DllMain 函数使用弱外部链接。MFC 库也包含 newdeleteDllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。  

解决方案:强制链接器按照正确的顺序链接库
要链接设置的添加依赖最前面输入Nafxcwd.lib;Libcmtd.lib
在忽略指定库中输入Nafxcwd.lib;Libcmtd.lib。


参考
http://www.cnitblog.com/liaoqingshan/archive/2010/10/22/21082.html
http://support.microsoft.com/?scid=kb;zh-cn;148652&spid=2990

3.在VS2005以上的Visual Studio要求C++更加的标准化,所以VC6的代码升级到VS2010很多地方都要修改。

例如 afx_msg void OnSynthThreadPause(WPARAM wParam, LPARAM lParam); 在VC6.0下面定义是没问题的,如果放到VS2010编译,会出错:

修改:void----->LRESULT,问题解决!



100.java.net.HttpURLConnection

  URL.openConnection()并没有建立网络连接;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值