嵌入 C++库到 .Net 库
在我的 .Net 程序集中,我必须使用一些本机 (C++) dll。通常我们需要将C++ dll复制到bin文件夹中并使用PInvoke
来调用它。为了节省分发成本,我想将 C++ 直接嵌入到我的 .Net dll 中,这样分发的程序集数量就会更少。
知道如何做到这一点吗?
In my .Net assemblies I would have to make use of some native (C++ ) dlls. Usually we need to copy the C++ dlls into the bin folder and use PInvoke
to call it. To save the distribution cost, I want to embed the C++ into my .Net dll direct, so that the number of assemblies distributed would be less.
Any idea how to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将本机 DLL 作为资源嵌入。
然后在运行时,您必须将这些本机 DLL 提取到临时文件夹中;当您的应用程序启动时,您不一定具有对应用程序文件夹的写入权限:想想 Windows Vista 或 Windows 7 和 UAC。因此,您将使用此类代码从特定路径加载它们:
You would embed your native DLLs as resources.
Then at runtime, you would have to extract those native DLLs into a temporary folder; you don't necessarily have write access to the application folder when your application launches: think windows vista or windows 7 and UAC. As a consequence, you would use this kind of code to load them from a specific path:
您可以将 dll 作为资源嵌入。
在运行时,将它们解压到与 exe 相同的文件夹中,并使用 P/Invoke 调用其中的方法。
You can embed your dlls as resources.
At runtime, extract them to the same folder as your exe and use P/Invoke to call methods inside them.