调试错误信息总结

1、使用add 新增了一个类,后来发现不需要,又把生成的类的文件删除了,然后编译出错

出错信息如下:

fatal error C1083: Cannot open source file: 'MyClass.cpp': No such file or directory


我建立了一个类MyClass,后来发现不需要,就打开项目文件夹,将 此类对应的.h,cpp删除了,再编译的时候出现上述错误。

原因是:虽然删除了文件,但是解决方案中,还保留着MyClass信息,解决方案中并没有删除。

方法:




2 动态加载DLL,总是不成功

  原因路径没设置好,EXE设置在BIN路径

  但是debugging调试的路径,却不是bin, 将其设置为相同路径就好了,当然动态加载的这个dll也要放在bin文件夹里


  





vs调试正确显示utf8格式字符串


自从将visual studio从2010升级到2015后,发现调用接口的utf8格式字符串不能正常显示了,常常被莫名其妙截断,查了下,原来可以直接将变量拖到watch窗口中,在变量名后面手动添加,s8予以解决,

总结如下:

,s8:将字符串转成unicode展示

,数字  将变量拆分为数组显示, 数字是要显示多少位, 此法对const char*这类原始字符串非常有用

,x 16进制查看

,hr  查看Windows HRESULT解释

,wm Windows消息,例如0x0010, wm 显示 WM_CLOSE


4 vc\include\xrefwrap(283): error C2440: 'return' : cannot convert from 'void' to 'bool'

// non-const class member function 
template<class R, class C, class... DArgs, class P, class... Args>
auto Bind(R(C::*f)(DArgs...), P && p, Args && ... args) 
	->WeakCallback<decltype(std::bind(f, p, args...))>
{
	std::weak_ptr<WeakFlag> weak_flag = ((SupportWeakCallback*)p)->GetWeakFlag();
	auto bind_obj = std::bind(f, p, args...);
	static_assert(std::is_base_of<nbase::SupportWeakCallback, C>::value, "nbase::SupportWeakCallback should be base of C");
	WeakCallback<decltype(bind_obj)> weak_callback(weak_flag, std::move(bind_obj));
	return weak_callback;
}

}

绑定使用:

	camera_out_quality_list_combo->AttachSelect(nbase::Bind(&DetectForm::OnVideoQualitySelected, this));

定义成了   void OnVideoQualitySelected();

        应该定义成 bool 类型,就可以了 

        bool OnVideoQualitySelected(); 



5 studio 12.0\vc\include\assert.h(32): error C2143: syntax error : missing ';' before 'string'

  vs崩溃后,重启重运行,跳出这么奇怪的系统文件错误

  当然,系统文件是肯定不会错的

 原因:

class MyForm{

};  //此处的分号不见了,将其添加上就可以了



6 libc.lib

老的项目会有这个库的问题

解决方法:

忽略这个库


但我使用另一种解决方式时:

I had this problem in MS VC++ 2012 Express with Windows SDK 7.1.

I found this solution from the DISLIN developers :

  (i) in MS VC++\Project\<YourProject> Properties pull-down...
 (ii) <YourProject>Property Pages\Ignore Specific Default Libraries : libc.lib
(iii) <YourProject>Property Pages\Additional Dependencies\Edit : libcmt.lib


添加了libcmt.lib  反而有更多冲突


解决方法:

只需要忽略libc.lib就可以,但这个时候你可能还不成功



这时候还需要运行环境匹配

比如:

1)共享库



匹配的代码生成运行库



2)静态库



匹配的是






猜你喜欢

转载自blog.csdn.net/shuilan0066/article/details/79880041