CXX0017: 错误: 没有找到符号

本文档详细介绍了如何解决在Debug配置状态下遇到的CXX0017错误,即编译过程中找不到特定符号的问题。通过分析和调试,提供了解决此问题的初始解决方案。

编程环境:Visual Studio 2010

首先确定是在 Debug 配置状态。

初始解决方案如下:

错误现象:CXX0017: Error: symbol this not found
方法 1:
将编译优化选项设置为"/Od"就可以了。
工程右键 -> Properties -> Configuration Properites -> C/C++ -> Optimization -> Optimization: Disabled(/Od)
注:如果解决,程序可能存在逻辑错误
方法 2:
将VS生成的工程文件全部删除,(Debug目录下的pdb文件),然后全部重新生成

3. 如果未解决,可能是 Visual Studio 2010 自身bug问题。见 MSDN bug report
https://connect.microsoft.com/VisualStudio/feedback/details/613569/cannot-inspect-local-variables-while-debugging-in-vs2010-cxx0017-symbol-not-found-error#details
 
情况 1.  
int _tmain(int argc, _TCHAR* argv[])
{
    float f = 123.0;   //声明并初始化 

    if(false)
    {
        int str1;   //if中声明新变量。关键!去掉此处可以解决问题,所以可在 if 外声明
    }
    else
    {
        //else中声明的变量在调试时,出问题
        int str2;
        int a = 123; 
        a++;
    }
    return 0;
}

情况 2. 解决方案 将 k 作为局部变量使用,即for(int k=0;k<2;k++)
#include <stdio.h>

int main()
{
	int arr[5];
	int k;    //循环变量,非局部
	float f=123;

	for(k=0;k<2;k++)
	{
		arr[k] = 2;

		int t = 5;
		printf("%d\n",t);
	}

	int i = 2;

	if(i > 0)    //if从句内出现的 新变量,也会出现问题
	{
		int joke;
		printf("waht\n");
	}

	return 0;
}

以上只是已测试的情况,如果类似问题,可参考进行调试


../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::parent_path() const' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::has_parent_path() const' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::_M_find_extension() const' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::symlink_status(std::filesystem::__cxx11::path const&)' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::has_root_directory() const' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&)' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::read_symlink(std::filesystem::__cxx11::path const&)' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::replace_extension(std::filesystem::__cxx11::path const&)' ../../../lib/libg2o_stuff.so.0.2.0: undefined reference to `std::filesystem::__cxx11::path::has_filename() const' collect2: error: ld returned 1 exit status g2o/apps/g2o_cli/CMakeFiles/g2o_cli_application.dir/build.make:99: recipe for target 'bin/g2o' failed make[2]: *** [bin/g2o] Error 1 CMakeFiles/Makefile2:1230: recipe for target 'g2o/apps/g2o_cli/CMakeFiles/g2o_cli_application.dir/all' failed make[1]: *** [g2o/apps/g2o_cli/CMakeFiles/g2o_cli_application.dir/all] Error 2 Makefile:155: recipe for target 'all' failed make: *** [all] Error 2
08-07
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值