VS2010中打开项目时,出现如上图所示的弹窗。 由提示消息 “请确保已安装Microsoft SQL Server Compact 3.5,并且没有其他应用程序正在访问文件。” 可知,可能是自己的电脑上是真的没有安装Microsoft SQL Server Compact 3.5(或者是没有正确安装)。 我解决的步骤如下: (1)到微软官网,搜索栏中输入SQL server Compact。 网址链接:https://www.sxzhongrui.com (2)搜索出结果后,点击需要的3.5版本(图中的红框)。点进去之后先不要急着点击下载。先把下面的蓝色字都读一下。尤其是安装说明!阅读安装说明是整个过程最关键的步骤! (3)下载完成之后,网页里找到下载历史(谷歌浏览器Ctrl+J组合键)。在点击“在文件夹中显示” (4)到文件夹中之后会自动定位到相应的文件“SSCERuntime-CHS.exe”。 (4)双击之后又弹出一个窗口: 这时先忽略,点击“是”。 (5)接着又是一个弹窗: (6)点击“浏览”之后选定路径: (7)点击确定。之后到放置文件位置的文件夹。我的是在I盘中的“VS2010_SQL_Server_Compact”。里面有三个文件: (8)如果是双击“SSCERuntime_x64-CHS.msi”文件,会出现弹窗: 提示说应该先安装x86版本。 (9)这时点击“确定”之后再双击“SSCERuntime_x86-CHS.msi”。 接着按照弹出的提示消息(什么我同意,还有什么下一步的等等这些提示消息)一步步操作就可以正常安装完成了。 (10)正常安装完x86版本之后,再双击双击“SSCERuntime_x64-CHS.msi”。按照提示信息一步步的安装。都安装结束之后,通过VS2010再打开已有项目的时候,就正常了。

我终于解决啦!!!

怀着激动的心情,我写下了这篇文章,以此纪念我逐渐暴躁的三小时,希望大家也能从这篇文章里得到帮助。

首先,我遇到的问题是“创建或打开C++浏览数据库文件时发生错误。intellisense和浏览信息将不能用于C++项目”(如下图)。

?

这个问题困扰我好久了,我刚下载VS2010的时候报错说没有安装SQL Serve2008,我查了没有什么影响就没太注意,包括之后我用VS2010的时候也会跳出这个消息提示,但是建项目编译运行都没有什么影响,就在昨天它突然就不能用来建C++项目了!!!然后我就去百度知乎CSDN找各种前辈的解决方法。以下就是我所能查找到的前辈的解决方案:

1.可能是没有安装Microsoft SQL Server Compact3.5。

下载链接:https://www.sxzhongrui.com/zh-cn/download/confirmation.aspx?id=5783

下载之后会是一个SSCERuntime-CHS.exe文件,双击它就会有一个警告,点“是”,接着是“请键入提取文件的位置”,这个就是保存从SSCERuntime-CHS.exe文件提取出来的文件的位置,选定之后就能提取出SSCERuntime_x64-CHS.msi和SSCERuntime_x86-CHS.msi以及一个Install.txt,安装SSCERuntime_x64-CHS.msi和SSCERuntime_x86-CHS.msi(先安装x86再安装x64,先点击安装x64的话系统会提示你先安装x86),两个都安装成功之后重新启动VS2010,就可以使用了。

这个是大多数前辈的做法,但是我安装之后重新打开VS2010,新建C++项目还是会像之前一样报错,这个方法不能解决我的问题。

2.接着我又翻到一个帖子说可以在你的VS2010根文件夹里面查找一下SSCERuntime_x86-chs.msi、SSCERuntime_x64-chs.msi、SSCEVSTools-chs.msi三个程序,可能是没有安装SSCEVSTools-chs.msi,点击这三个程序并安装即可。我查找了一下在VS2010根文件夹(根文件夹也可能不是安装路径!!我的安装路径和根文件夹不在一起)确实有这几个文件。

?

接着我将它们三个都重新安装了一次(注意:这里我重新安装的时候并没有卸载之前上一步安装的SSCERuntime_x64-CHS.msi和SSCERuntime_x86-CHS.msi),安装成功之后重新启动VS2010,新建C++项目还是之前那样报错,这个方法也不能解决我的问题。

3.接着我又发现一个百度问答里面说确保在安装Microsoft SQL Server Compact3.5后,打开VS2010,点击”工具”,点击“选项”,双击”文本编辑器”,双击”C/C++”,点击“高级”,在右边选项中找到“回退位置”,将“始终使用回退位置”改成“Ture”,回退位置那里输入本地硬盘的文件夹做临时sdf存放处,点击确定,关闭VS2010再重新开启。重新开启VS2010, 打开VC++解决方案,会发现原来的报错消失,会提示新的sdf存储位置,表示上一步骤的回退位置设置正常,可以使用了,接着修改上一步“回退位置”中 “回退位置已在使用时,不警告:” 改为 “True ”,使得下次VS2010启动后直接正常打开解决方案,不再报错,全部正常了。

我按照这个方法修改之后重新启动VS2010,新建一个C++项目,还是像之前一样报错,这个方法也不能解决我的问题。

4.在我濒临崩溃准备卸载VS2010重新安装时,我突然在一个论坛的恢复里看到有前辈说可能是系统文件出现错误,有缺失,我想会不会是我VS2010根文件里面的SSCERuntime_x86-chs.msi、SSCERuntime_x64-chs.msi、SSCEVSTools-chs.msi三个程序有问题。我决定试一把!我战战兢兢地卸载了这三个程序(注意,是卸载不是直接删除),接着又将我重新下载的SSCERuntime-CHS.exe文件按照方法1那样安装,接着启动VS2010,新建一个C++项目,终于!那个烦人的报错再也没有弹出来!!

这一刻,我的喜悦像奔腾不息的江水,流遍我的全身,我内心压抑的怒火都在那一刻转化为无尽的喜悦和欢愉,即使在一天之后我写这篇文章的时候,我的精神都处于一个兴奋的状态。希望我的这篇文章可以帮助到同样遇到这个问题的你。

开发路漫漫,尤其对于刚从事开发不久的新手来说,常常遇到一些稀奇古怪的错误,很是头疼,鉴于自己在开发过程中常遇到的几个错误做个分享,希望对大家有所帮助:

错误1:

  在创建完win32的DLL后,编译时出现:error LNK2005:_DllMain@12已经在dllmain.obj中定义

解决方法:

  在.cpp文件的开头加入如下代码:

  #ifdef _X86_  extern "C" { int _afxForceUSRDLL; }  #else  extern "C" { int __afxForceUSRDLL; }  #endif

?

错误2:

  在调用dll时出现:

  ”Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.

  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.”

原因:

  你定义的指针函数原型出错,因为你调用的dll函数是一个远函数,而且是一个C函数,你得告诉编译器它是个C函数才行

解决方法:

  在定义函数指针时加上__stdcall即可

  eg:?typedef void (__stdcall *pCloseComPort)();

?

?错误3:

  现象:fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha

解决方法:

  因为是静态库中使用MFC时,当出现这种问题时,依次点击

?  工程-->属性-->配置属性-->C++--> 命令行

  在其他命令中添加:/D "_AFXDLL"

?

错误4:

  现象:?fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include

解决方法:

  原因:头文件的顺序不能反

  #include ? //先引用这个

  #include ?//后引用这个

?

错误5:

  现象:提示microsoft incremental linker已停止工作解决方法

解决方法:

  项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。

  不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)

  选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。

?

错误6:

  现象:错误:fatal error C1003: 错误计数超过 100;正在停止编译

解决方法:

  原因:出现这种情况是因为编译器将C++文件编译成C导致的

  方法:

    1)如果你的main文件后缀为C,该为cpp即可

    2)如果你发现main文件后缀为cpp ,这是可能就是你的IDE设置的问题了,依次点击:属性管理器-->通用属性-->C/C++-->高级-->编译为,如果编译为里面是C,修改为默认值即可

?

错误7:

  现象:错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

解决方法:

  在电脑里搜索cvtres.exe文件,发现:

  C:\Program Files\Microsoft Visual Studio?10.0\VC\bin

  C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7600.16385_none_ba476986f05abc65

  C:\Windows\www.sxzhongrui.com\Framework\v4.0.30319

  三个路径下都有此文件,尝试用第二个路径里边的文件替换第一个路径的文件,问题解决。

转载于:https://www.sxzhongrui.com/klm-20170704/p/7326070.html