error: C2859 C1083 解决

"stdafx.cpp"编译引起的C2859、C1083、LNK2001错误(2009-11-10 15:10:23)

今天在VC2005中修改一个工程的文件结构,将"stdafx.cpp"文件挪动了位置,编译时出现C2859错误,具体信息如下:

error C2859: e:\projects\apptest\src\debug\vc80.pdb is not the pdb file that was used when this precompiled header was created, recreate the precompiled header. e:\projects\apptest\src\mainapp.cpp 4 

error C2859: e:\projects\apptest\src\debug\vc80.idb is not the idb file that was used when this precompiled header was created, recreate the precompiled header. e:\projects\apptest\src\mainapp.cpp 4 

按照提示要求,clean编译文件,rebuild工程,还是一样的问题。发现debug文件夹下总是有一个mainapp.pch文件(预编译文件),即使clean也不会删除。将该文件手动删除,rebuild工程,出现C1083错误:

fatal error C1083: Cannot open precompiled header file: 'Debug\MainApp.pch': No such file or directory e:\projects\apptest\src\mainapp.cpp 4 

查看工程设置properties -> Configuration Properties -> C/C++ -> Precompiled Headers,为“Use Precompiled Headers (/Yu)”,所以预编译文件mainapp.pch不会自动生成;改为“Create Precompiled Headers (/Yc)”,rebuild工程,ok。

但是工程原来的设置“Use Precompiled Headers (/Yu)”是可以编译成功的啊,于是再改回原来的设置,build,出现LNK2001错误:

error LNK2001: unresolved external symbol "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ) mfcs80ud.lib 

百思不得其解,google上找答案,原来VC对于预编译的设置是这样的:

1、"stdafx.cpp"文件的预编译选项永远是“Create Precompiled Headers (/Yc)”;

2、工程的预编译选项一般为“Use Precompiled Headers (/Yu)”。

可知"stdafx.cpp"文件的预编译选项一般与工程的预编译选项设置是不同的,也就是说每次build工程时,"stdafx.cpp"文件都要生成预编译文件*.pch,而其他cpp文件则直接用这个文件进行编译。于是选中"stdafx.cpp"文件,右键“Properties”,选择 “All Configurations”,将预编译选项设置为“Create Precompiled Headers (/Yc)”,再次rebuild,一切ok。

回忆引起出错的操作,是从工程中删除"stdafx.cpp"文件后又添加到工程中的。看来VC框架生成的工程会自动将"stdafx.cpp"文件的预编译选项设置好,如果用户手动添加该文件的话,预编译选项将会与工程的选项相同。打开一个以前的MFC工程查看,果然验证了自己的想法。

错误信息 "Error: error:0308010C:digital envelope routines::unsupported" 出现于OpenSSL库中,通常是由于尝试使用某个不被当前环境支持的加密算法或操作。这可能是因为您的系统缺少必要的库文件、编译选项配置不正确,或者是使用的版本过旧,不再支持某些高级功能。 要解决这个问题,请按照以下步骤尝试: 1. **更新 OpenSSL**:检查您的系统是否有最新版本的 OpenSSL 安装。如果有的话,尝试升级到最新稳定版,因为新版本可能会修复已知的问题。 ```sh sudo apt-get update && sudo apt-get install openssl ``` 或者对于Windows用户: ``` choco upgrade openssl ``` 2. **重新编译安装**:如果您是在自定义构建项目并遇到这个错误,确认您正确地链接了 OpenSSL 库,并检查编译参数是否包含了所需的加密算法支持。 3. **检查依赖和环境变量**:确保所有相关的库文件路径都包含在系统路径中,特别是`LD_LIBRARY_PATH`或`DYLD_LIBRARY_PATH`(取决于操作系统)。 4. **代码层面排查**:在应用代码中检查是否直接使用了不被支持的加密方法,如果是,替换为可用的方法。 5. **查看日志和文档**:查阅 OpenSSL 文档或者项目的官方文档,看看有没有针对此错误的具体解决方案或建议。 6. **联系技术支持**:如果以上方法都无法解决问题,可能是某个特定环境下的专有问题,此时应该联系软件开发者或社区寻求帮助。 遇到这种专业级的错误,可能涉及到复杂的底层细节,所以一定要仔细阅读错误消息和相关资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值