【原创】error RC2103 : unexpected end of file in string literal

本文记录了一次使用MS2008进行MFC小程序开发过程中遇到的编译错误errorRC2103: unexpected end of file in string literal,并详细介绍了排查及解决过程。

使用MS2008做了一个MFC的一个小程序。添加了一个resource symbol后编译的时候就出现了这个错误

error RC2103 : unexpected end of file in string literal

之前无论怎么添加symbol都不会出现错误。不知道今晚是怎么了,只要我一添加在编译就错误。

出现问题就要找到问题,找不到问题今夜怎么能睡个好觉呢?

分析:

从备份出来的程序,编译不会出现问题。我只添加了一个bmp的symbol后。就出现了这个问题,起初怀疑是我文件的格式不对。后来换了一个原来加载过的bmp文件还是会出现问题。可以排除文件错误的问题。

源码的问题不可能。因为我只是添加了bmp文件,但是对bmp文件未作任何处理,不应该出现这样的问题。

双击:error RC2103 : unexpected end of file in string literal 这个错误信息后。提示test.rc文件已经被打开。关闭后弹出来test.rc内容。仔细浏览后,由于文件内容太多,太复杂,而且还不易发现错误。最后提取出来好用的和不好用的两个文件,使用UE进行对比。最终发现错误原因。修改后build OK。

解决办法:

1.打开*.rc文件。

2.查找到最后几行。

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
LANGUAGE 4, 2
#pragma code_page(936)
#include "res\test.rc2"  // 非 Microsoft Visual C++ 编辑的资源
#include "afxres.rc"     // 标准组件
#endif

1 TYPELIB "test.tlb
/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

 

这个是出错的文件。

仔细查看   1 TYPELIB "test.tlb 发现少了一个"号 修改成1 TYPELIB "test.tlb"

编译后OK!

 

一个小小的问题,困扰了我20分钟。郁闷~~~

 

 

作者:小盒子

时间:2010年08月23日

地点:大连

注意:该文未经笔者同意请勿转载,如需转载请与笔者联系。谢谢合作!

### 解决 `fatal error C1004: unexpected end of file found` 的方法 `fatal error C1004: unexpected end of file found` 错误通常表示编译器在文件结束时没有找到预期的内容,可能是由于代码中缺少了必要的结束符号,如大括号 `}`、引号 `"` 等。以下是一些常见的解决办法: #### 检查代码中的括号配对 确保所有的大括号 `{` 和 `}` 都正确配对。例如,在函数、类或控制结构中,如果缺少了一个右大括号,编译器就会在文件结束时抛出该错误。 ```cpp // 错误示例 void example() { // 代码内容 // 缺少右大括号 ``` ```cpp // 正确示例 void example() { // 代码内容 } ``` #### 检查引号配对 确保所有的引号 `"` 都正确配对。如果字符串字面量没有正确结束,编译器也会出现此错误。 ```cpp // 错误示例 std::string message = "Hello, world; // 缺少右引号 ``` ```cpp // 正确示例 std::string message = "Hello, world"; ``` #### 检查预处理指令 确保所有的预处理指令(如 `#ifdef`、`#ifndef`、`#endif`)都正确配对。如果预处理指令没有正确结束,编译器可能会在文件结束时出错。 ```cpp // 错误示例 #ifdef DEBUG // 调试代码 // 缺少 #endif ``` ```cpp // 正确示例 #ifdef DEBUG // 调试代码 #endif ``` ### 解决 `Error executing cl.exe` 的方法 `Error executing cl.exe` 错误通常表示在执行 Microsoft Visual C++ 编译器(`cl.exe`)时出现了问题,可能是由于编译器配置错误、磁盘空间不足或其他系统问题导致的。以下是一些常见的解决办法: #### 检查编译器路径 确保编译器 `cl.exe` 的路径正确配置。可以在命令行中使用 `where cl.exe` 命令来检查编译器的路径是否正确。如果路径不正确,需要更新环境变量或重新安装 Visual Studio。 #### 检查磁盘空间 确保磁盘有足够的空间来存储编译过程中生成的临时文件。如果磁盘空间不足,编译器可能无法正常执行。可以清理磁盘空间或更换磁盘。 #### 检查系统资源 确保系统有足够的内存和 CPU 资源来运行编译器。如果系统资源不足,编译器可能会崩溃或无法正常执行。可以关闭其他不必要的程序或升级硬件。 #### 重新安装 Visual Studio 如果以上方法都无法解决问题,可以尝试重新安装 Visual Studio。在重新安装之前,建议备份重要的项目文件。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值