如何使用 .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 创建伯克利数据库?的主要内容,如果未能解决你的问题,请参考以下文章

Python 伯克利数据库队列

如何在 Linux 中使用 C 进行 UDP 广播?

2018/10/04-网络API-《恶意代码实战分析》

使用WireShark进行网络安全分析

如何在 C++ 中创建 RAW TCP/IP 数据包?

如何使用 .NET 创建 JSON 数据?