我可以在.NET程序集中嵌入win32 DLL,并使用P / Invoke调用它吗?

时间:2008-12-15 11:33:08

标签: c# .net pinvoke

我正在为第三方本机库编写一个C#包装器,我们将其作为DLL。我希望能够为新程序集分发一个DLL。我可以在我的.NET DLL中嵌入win32 DLL,还是使用P / Invoke调用它吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:2)

我从来没有这样做但我知道一个开源项目就是这样做的。他们使用自己的名为mergebin的工具将原生SQLite3代码嵌入到托管SQLite程序集中。

去查看SQLite project for .NET by PHX并获取源代码,您可以看到它是如何完成的。

答案 1 :(得分:2)

如果本机dll没有任何依赖项,应该可以工作。

您可以在嵌入式资源中编译dll,而不是从代码中访问流,将其序列化到临时文件夹并从那里使用它。

在这里发布示例代码太多了,但方法并不复杂。

答案 2 :(得分:1)

我认为你不能直接这样做,但是可以在运行时将它提取到某个临时位置并调用该副本。