如何将 C/C++ dll 导入 .NET 应用程序
Posted
技术标签:
【中文标题】如何将 C/C++ dll 导入 .NET 应用程序【英文标题】:How to Import a C/C++ dll to .NET application 【发布时间】:2010-08-10 13:04:08 【问题描述】:在我的新项目中,我想使用现有的 C C++ 函数。为此,我需要将 C/C++ dll 添加到 C# 项目中。
我的 C/C++ 项目属于 UnManaged 类型,它不是 COM 项目。我从 MSDN 看过几篇文章并尝试过:
[DllImport("user32.dll", EntryPoint="MessageBoxA")]
但我不确定应该将user32.dll
或my.dll
放在哪里。我是否需要将我的 dll 放在 GAC 或其他物理文件夹中。
如果那将是一个物理文件夹,那么我不需要使用相对路径或绝对路径吗?
还阅读了几篇关于使用 InterOp 移植 C++ dll 的文章,但不太清楚如何开始。
【问题讨论】:
【参考方案1】:请不要将您自己的 dll 放在 C:\Windows\system32 中。如果你要使用 Windows 的一部分,比如 user32.dll,你不要把它放在任何地方,它已经在那里并且会在运行时找到,因为 C:\Windows\system32 在路径上。如果您要使用自己的 DLL,请将其放在 bin 或 bin\Debug 或任何文件夹中,就在您的 exe 旁边。这很容易通过将其添加到项目中来完成,这样它就会在您构建时复制到输出目录中,但是您可以拥有一个 MSI 或其他任何东西。如果它被多个应用程序使用,您必须决定是希望它们在更新时都开始使用新应用程序,还是对现有副本感到满意。这可能是一个复杂的问题,你有足够的时间让它为一个应用程序工作,对吧?
对于入口点,它是 DLL 中函数的名称。如果您在托管代码中使用相同的名称,则可以将其省略。它允许您将可能会觉得复杂的 DLL 函数名称映射到您在托管代码中使用的更简单的名称。
【讨论】:
【参考方案2】:您可以将它放在您的应用程序bin
文件夹中。
【讨论】:
以上是关于如何将 C/C++ dll 导入 .NET 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
C/C++:项目中的dll的构建和dll的导入函数并执行(VS2015)
C/C++:项目中的dll的构建和dll的导入函数并执行(VS2015)