c# - 有没有办法从 C# 应用程序调用非托管(非 COM)dll?

标签 c# c++ interop unmanaged marshalling

有没有办法在我的 C# 应用程序中使用(引用)用非托管 C++(不是 COM 库)编写的 DLL?

当我尝试从 Visual Studio 中引用它时,我收到“不是 COM 对象”的错误消息。

也许有某种转换器\路由器可以 COMify 我的 DLL 引用? 我不知道 COM 和 COM 互操作是如何工作的,因为我开始编程时这对我来说已经没有必要了。

谢谢。

最佳答案

您需要使用 DllImport 属性。下面是 Win32 PostMessage 函数的示例:

[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool PostMessage(IntPtr handle, int message, IntPtr wparam, IntPtr lparam);

关于c# - 有没有办法从 C# 应用程序调用非托管(非 COM)dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/476043/

相关文章:

c++ - std::vector 比普通数组快多少?

c++ - 如果我们向它输入一个整数,那么一个字符会给出整数作为输出,但是当一个整数被分配给它时,这不会发生。为什么?

c# - 在 c# 中使用 c 套接字时出现的问题

c# - 获取所有工作表

c# - 抑制 Console.Write 在引用包中

c++ - 如何在 C++ 中使用宏生成任意长的参数列表?

c# - 向 Windows 进程(不是它的主窗口)发送消息

c# - Angular 6/C#/MVC 以 Json Array of Array 的形式从 Controller 动态返回 JsonResult

c# - 窗体 : multiple keys pressed

c# - 以编程方式 (C#) 将 Excel 转换为图像