error C2061: syntax error : identifier '__RPC__out_xcount_part'

本文介绍了解决VS2010编译DirectX程序时遇到的error C2061语法错误的方法。通过调整包含目录的顺序,将Windows SDK目录置于DirectX SDK之前,可以有效避免该问题。

error C2061: syntax error : identifier '__RPC__out_xcount_part'

症状
vs2010编译physx3出现

error C2061: syntax error : identifier '__RPC__out_xcount_part'


解决办法
在c/c++ -> General -> Additional Include Directories中,把windowsSDK的目录放置在directx的include路径之前。
注意!这里不是修改全局c/c++ directories。

大约是directx的sdk冲突引起的。ms找到的建议是1.升级d3d sdk,2.使用vs2010 beta2.
经测试1无效,2,2没试。


转自:http://www.cnblogs.com/mumuliang/archive/2011/05/30/2063265.html


我出现的问题也是一样:

平台:vs2010

程序:我使用DX来做一个简单的小程序

最后配置:

VC++ Directories->Include Directories:$(IncludePath);$(DXSDK_DIR)include\

VC++ Directories->Library Directories:$(IncludePath);$(DXSDK_DIR)Lib\x86\

Linker->Input->Additional Dependencies:d3d9.lib;d3dx9.lib;dinput8.lib;dxguid.lib;kernel32.lib......


### `error C2061: syntax error : identifier 'm_db'` 的原因与解决方法 `error C2061` 是 Visual C++ 编译器在解析源代码时遇到语法错误时所报告的错误之一,提示“标识符 'm_db' 存在语法错误”。该错误通常不是因为标识符本身不合法,而是由于编译器在遇到该标识符时无法识别其类型或定义上下文。 #### 常见原因及解决方法 - **未正确包含定义 `m_db` 的头文件** 如果 `m_db` 是某个类或结构体的成员变量,而编译器在解析时未找到其定义,就会报此错误。需要确保在使用 `m_db` 的源文件中包含了定义该变量的头文件。例如: ```cpp // 在类定义头文件中 class CMyClass { public: CDatabase m_db; }; ``` 如果在实现文件中未包含该头文件,或包含顺序错误,会导致编译失败[^1]。 - **变量定义前未声明类型** 如果 `m_db` 是一个对象或变量,但其类型 `CDatabase` 未被前置声明或包含定义该类的头文件,也会导致此错误。可以添加前置声明或包含头文件: ```cpp class CDatabase; // 前置声明(仅适用于指针或引用) // 或者 #include "Database.h" // 包含完整定义 ``` - **拼写错误或变量名错误** 检查 `m_db` 是否在类或结构体中正确定义。例如,是否在类中声明了该成员变量: ```cpp class CMyClass { private: CDatabase m_db; // 确保此行存在 }; ``` - **命名空间或作用域问题** 如果 `m_db` 定义在特定命名空间或类中,而访问时未指定作用域,也可能导致识别失败。例如: ```cpp namespace MyNamespace { extern CDatabase m_db; } // 使用时应为 MyNamespace::m_db.Open(); ``` - **项目配置问题或预编译头文件错误** 在某些情况下,如果预编译头文件未正确配置,或某些系统头文件未被包含,也可能导致编译器无法识别标准类型或宏定义,从而间接导致标识符错误。 --- ### 示例代码 ```cpp // MyClass.h #pragma once #include <afxdb.h> // 包含 CDatabase 定义 class CMyClass { public: CDatabase m_db; }; // MyClass.cpp #include "MyClass.h" void CMyClass::OpenDatabase() { m_db.Open("DSN=MyDSN;"); // 使用 m_db } ``` --- ### 注意事项 - 如果使用 MFC(Microsoft Foundation Classes),确保项目中启用了数据库支持,并正确链接了相关库。 - 若 `m_db` 是数据库连接对象,注意检查 DSN 设置是否正确,以及是否包含 ODBC 支持。 - 对于使用智能指针或封装类的情况,确保内存管理和资源释放逻辑正确。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值