如何从 C# DLL 创建 .lib 文件?
Posted
技术标签:
【中文标题】如何从 C# DLL 创建 .lib 文件?【英文标题】:How to create a .lib file from a C# DLL? 【发布时间】:2013-05-10 07:27:31 【问题描述】:我需要从 C# DLL 创建一个 .lib 文件(我认为它是 C#,因为此代码调用了 dll https://code.google.com/p/thunder-missile-api/downloads/detail?name=MissileLauncher.cs&can=2&q=)换句话说,我需要为 DreamCheeky Thunder Missile Launcher DLL 创建一个 .lib,他们的 software 附带。
现在,我需要做什么?我需要使用 C++ 操作这个设备。最简单的方法是使用他们自己的DLL。上面链接的代码在 C# 中完成。
我尝试将 DLL 文件导入 C++ 项目,但似乎缺少一些方法,特别是在 C# 代码中调用的 moveMissileLauncher()
等方法。
最好的是,我可能想迁移到 QT(很可能),所以你知道,拥有 .lib 是个好主意。
【问题讨论】:
【参考方案1】:从托管的 dll 中创建一个库是没有用的。您需要使用互操作 http://msdn.microsoft.com/en-us/library/ms973872.aspx
在您的具体情况下,我会编写一个 C++ 库来公开您需要/想要调用的方法,并使用互操作将它们转发到托管 C# dll
我个人会在 C++/CLI 中执行此操作。 关于您所拥有的选项的一篇不错的最新文章在此处http://msdn.microsoft.com/en-us/magazine/dd315414.aspx,或者在此处查看 SO for COM/.NET interop,您会找到很多答案。
【讨论】:
感谢您的回复。你的意思是,为 dll 手动编写 c++? @Knight 我在答案中添加了几个链接。基本上,您将需要一个代理/包装器将函数转发到托管 DLL。因此,基本上,您将拥有本机 exe (C++) -> 本机 DLL (C++/CLI) -> 托管 DLL 根据您的需要,您甚至可以折叠前两个步骤.. 但是既然您提到了 QT,也许将它们分开会更好(我不知道 QT 对 C++/CLI 的反应如何) .或者您可以通过 COM 互操作而不是 C++/CLI。我能给您的最佳建议是阅读 MSDN 文章并根据您的特定情况权衡您的选择。【参考方案2】:您想从您的 c++ 应用程序调用托管 C# 代码。 Here 是从你的 c++ 应用程序调用 c# 代码的教程,我以前用过这个方法,对我来说很好。
【讨论】:
以上是关于如何从 C# DLL 创建 .lib 文件?的主要内容,如果未能解决你的问题,请参考以下文章
请问如何把lib(C语言编的)同其带有宏定义的.h文件封装起来 生成一个新的文件供C#调用?