代码之家  ›  专栏  ›  技术社区  ›  Simsons

如何将C/C++ DLL导入.NET应用程序

  •  2
  • Simsons  · 技术社区  · 14 年前

    在我的新项目中,我想使用现有的C++函数。为此,我需要将C/C++ +DLL添加到C.*项目中。

    我的C/C++项目是非托管类型的,它不是COM项目。我在MSDN上看过几篇文章,并尝试过:

    [DllImport("user32.dll", EntryPoint="MessageBoxA")]
    

    但我不知道我该把它放在哪里 user32.dll my.dll . 我需要把我的dll放在GAC或其他物理文件夹中吗。

    如果这是一个物理文件夹,那么我不需要使用相对或绝对路径吗?

    同时,阅读几篇文章,讨论如何使用互操作移植C++ DLL,但不太清楚如何开始。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Kate Gregory    14 年前

    请不要将自己的dll放在C:\Windows\system32中。如果要使用部分Windows,比如user32.dll,则不要将它放在任何位置,它已经存在,并且会在运行时找到,因为C:\Windows\system32在路径上。如果要使用自己的DLL,请将其放入bin或bin\Debug或任何文件夹中,就在exe旁边。通过将它添加到项目中,以便在构建时将其复制到输出目录中,这是最容易实现的,但是您可以有一个MSI或其他什么。如果它被多个应用程序使用,那么您必须决定是希望所有应用程序在更新后都开始使用新的应用程序,还是希望它们对现有的副本满意。这可能是一个复杂的问题,你有足够的时间让它为一个应用程序工作,对吧?

    至于入口点,它是DLL中函数的名称。如果在托管代码中使用相同的名称,则可以忽略它。它允许您将一个DLL函数名映射为一个在托管代码中使用的更简单的名称。

        2
  •  2
  •   Łukasz W.    14 年前

    你可以把它放在你的申请表里 bin