C# 如何从C代码在Visual Studio中创建本机DLL?

C# 如何从C代码在Visual Studio中创建本机DLL?,c#,c++,visual-studio,dll,C#,C++,Visual Studio,Dll,我有一个C#程序的源代码。我想从它中创建一个DLL,我想在C++中使用它。 在Visual Studio 2008中创建一个本地DLL,它可以在C++/P>> P>中使用,在Visual Studio 2008中是可能的,但是你不能用C++来编写它。 < >创建一个本地DLL,您必须使用非托管C++项目类型之一编写代码。 < P>可以将DLL暴露给COM。如果你想让程序是本地的,而不是托管的,你需要将它移植到C++,而不是使用c*i.< /p>。 Py>,可以将它编译成C++,并用C++使用C

我有一个C#程序的源代码。我想从它中创建一个DLL,我想在C++中使用它。

在Visual Studio 2008中创建一个本地DLL,它可以在C++/P>> P>中使用,在Visual Studio 2008中是可能的,但是你不能用C++来编写它。


< >创建一个本地DLL,您必须使用非托管C++项目类型之一编写代码。

< P>可以将DLL暴露给COM。如果你想让程序是本地的,而不是托管的,你需要将它移植到C++,而不是使用c*i.< /p>。 <> Py>,可以将它编译成C++,并用C++使用CL+CLI。这只需要编译使用带有/clr标志的C#库的文件。这提供了对.NET框架的C++访问,并允许您直接使用C++中的C语言编写的库。 P>可选的,可以使用.NET的COM互操作将C++类(ES)暴露为COM对象,然后使用来自原生C++的那些.< /P> < P>是的,可以。 您需要创建第二个项目。
项目必须是非托管的(如“visual c++”->类库)。
此过程的名称为“从非托管代码调用托管代码”。

好读
<强>你必须意识到使用DLL的任何计算机都必须预先安装<强> dotnet < /Stand >和<强> VisualC++可重分配包<强> > /p>

本地.NET互操作是我的一个宠物学科,这就是为什么我需要尽可能的简单和可靠。 其结果是,我制作了一个只需拖到项目中就可以从几乎任何.Net语言导出静态方法的。而且,由于整个编组基础结构也适用于导出,因此您可以使用它做任何您想做的事情(比如将本机/托管对象作为IUnknown传递)

生成的程序集看起来像一个真正的DLL,这意味着您不能再让它自动扩展到64位

但是,由于应用程序中确实存在本机位,因此无论如何,您已经存在此问题。;-)


当您没有在C#项目中指定CPU目标时,我的任务将发出警告,它为所有目标(x86、x64和安腾)创建了一个文件夹,在那里,每个平台都有*.dll和*.pdb。

+1个好东西。我期待着源代码的发布(你在“许可证和东西…”下暗示),看看它是如何工作的。Thx,发布源代码并不是最重要的。因为我得先选一张驾照。而且广泛传播的许可证限制性太强了,依我看……我想在保留版权的同时尽量减少限制,BSD许可证是自然的选择。但GPL也适用于构建工具(例如,gcc编译器套件是GPL版的,广泛用于构建商业应用程序)。您考虑了哪些有问题的限制?那么,我来看看BSD。任务代码驻留在一个程序集中,任何人都应该能够做任何他想做的事情。唯一的问题是,我不希望他们明确地宣称这是一项发明,但我不想要求他们向我的工作发布任何类型的提示(既不是作为某个文本文件,也不是在“关于”框中)。大多数许可证似乎对用户IMO的要求太多了。我也可以用C和C来实现吗?