为什么要安装Microsoft Visual C++2010 Redistributable Package x86来使



我用C#和SQLite编写了windows应用程序。当Microsoft Visual C++2010 Redistributable Package x86安装在PC上时,应用程序运行正常,但如果未安装Microsoft Visual C++2010Redistributble Package x86,则应用程序不会运行。为什么
SQLite是否依赖于Microsoft Visual C++2010 Redistributable Package x86?

SQLite的版本是由VS2010编译的,它依赖于C运行库,因此它需要Visual C++2010 Redistributable Package x86。

是。SQLite可能是用C++编写的。它是用/MD选项编译的,这意味着它在运行时需要msvcrt#.dlls。Restributable Package安装了这个,没有它就无法运行

因为SQLite显然开发了SQLite。C++中的Interop.dll,因为他们这么说:

(11)为什么在尝试运行应用程序时会出现DllNotFoundException(用于"sqlite3.dll"或"SQLite.Interop.dll")

无法找到命名的动态链接库(DLL),或者由于缺少依赖项而无法加载它。请确保命名的动态链接库位于应用程序目录或系统PATH下的目录中,然后重试此外,请确保已经安装了必要的Visual C++运行时可再发行程序,除非您使用的是静态链接到它的动态链接库。

强调最后一部分。您需要system.data.sqlite下载页面中的静态二进制文件,这样就不需要C++运行时。在提供二进制文件的同一页上,那些需要它的人会告诉你它是-例如,4.0需要Visual C++2010 SP1 x64运行时,而4.0需要更新4。NET 4.5。我使用了2015年的更新3。NET 4.0版本,没有任何问题。

注意-您可能不知道,但如果您尝试在文件共享上托管使用SQLite DLL的应用程序,并从工作站通过网络连接到该应用程序,则该工作站仍需要C++运行时,因为它在内存中运行该应用程序。

参考:http://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q11

链接到Microsoft Visual C++2015 Redistributable Update 3,我知道它可以使用64位。NET 4.0版本的SQLite二进制文件:https://www.microsoft.com/en-us/download/details.aspx?id=53840

SQLite依赖于Visual C++运行时,但不需要将其安装在客户端机器上。system.data.sqlite下载页面包含几个已经包含运行时的"静态"包。

所有"静态"包都包含静态链接到适当版本的Visual C++运行时的本机或混合模式程序集二进制文件。通常,这些包用于客户计算机可能没有安装必要版本的Visual C++运行时,并且由于权限有限而无法安装的情况。

例如,在我的计算机上,我运行的是Windows 8.1 x64,因此我转到为64位Windows(.NET Framework 4.0)预编译的静态链接二进制文件并下载sqlite-netFx40-static-binary-x64-2010-1.0.90.0.zip

此二进制包包含x64版本系统的所有二进制文件。数据SQLite 1.0.90.0(3.8.2)包。x64的Visual C++2010 SP1运行时是静态链接的。这个NET Framework 4.0是必需的。

然后我解压缩包并运行test.exe以确保一切正常。无需安装。

最新更新