如何使用 .Net 创建伯克利数据库?
Posted
技术标签:
【中文标题】如何使用 .Net 创建伯克利数据库?【英文标题】:How to create Berkeley database using .Net? 【发布时间】:2015-06-07 01:03:20 【问题描述】:我正在使用以下代码创建 Berkeley DB,但在最后一行收到错误消息:
“BerkeleyDB.Internal.libdb_csharpPINVOKE”的类型初始化程序引发了异常。
代码:
Dim DB As DatabaseEnvironment
Dim Config As DatabaseEnvironmentConfig
Config = New DatabaseEnvironmentConfig
Config.Create = True
DB = DatabaseEnvironment.Open("d:\database.db", Config)
请问有谁知道我做错了什么?
我正在使用带有 .Net Framework 4.0 的 VB Express 2010
全栈:
System.TypeInitializationException: The type initializer for 'BerkeleyDB.Internal.libdb_csharpPINVOKE' threw an exception. --->
System.TypeInitializationException: The type initializer for 'SWIGStringHelper' threw an exception.
System.DllNotFoundException: Unable to load DLL 'libdb_csharp61': Le module spécifié est introuvable.
(Exception from HRESULT: 0x8007007E) at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper.SWIGRegisterStringCallback_libdb_csharp(SWIGStringDelegate stringDelegate)
at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper..cctor()
in C:\carol\db-6.1.23\lang\csharp\src\Internal\libdb_csharpPINVOKE.cs:line 29
--- End of inner exception stack trace ---
at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper..ctor()
at BerkeleyDB.Internal.libdb_csharpPINVOKE..cctor()
in C:\carol\db-6.1.23\lang\csharp\src\Internal\libdb_csharpPINVOKE.cs:line 33
--- End of inner exception stack trace ---
at BerkeleyDB.Internal.libdb_csharpPINVOKE.new_DB_ENV(UInt32 jarg1)
at BerkeleyDB.Internal.DB_ENV..ctor(UInt32 flags)
in C:\carol\db-6.1.23\lang\csharp\src\Internal\DB_ENV.cs:line 276
at BerkeleyDB.DatabaseEnvironment..ctor(UInt32 flags)
in C:\carol\db-6.1.23\lang\csharp\src\DatabaseEnvironment.cs:line 174
at BerkeleyDB.DatabaseEnvironment.Open(String home, DatabaseEnvironmentConfig cfg)
in C:\carol\db-6.1.23\lang\csharp\src\DatabaseEnvironment.cs:line 2705
at WindowsApplication1.Form1.Form1_Load(Object sender, EventArgs e)
in C:\Documents and Settings\Steven\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb:line 13"
【问题讨论】:
运行它的帐户有权访问该文件夹? 当您询问未处理的异常时,您应该发布完整的异常。您可以通过将其复制到调试器中的剪贴板来做到这一点,或者如果您不使用调试器,您可以(暂时)在代码周围放置一个 try/catch:try /* your code */ catch (Exception ex) Console.WriteLine(ex.ToString()); Console.ReadLine();throw;
或使用 MessageBox.Show(ex.ToString())
或等效项。只需发布ex.ToString()
的结果即可。
我添加了完整的堆栈。
所以你可以看到你的错误是“Unable to load DLL 'libdb_csharp61': Le module spécifié est introuvable.”
【参考方案1】:
-
确保您的 .net 项目设置为 .NET 4.0
构建为 x86
libdb_csharp61.dll 在您的 /bin/debug 文件夹中
【讨论】:
以上是关于如何使用 .Net 创建伯克利数据库?的主要内容,如果未能解决你的问题,请参考以下文章