【问题标题】:Import MinGW C++ DLL in C# or VC++在 C# 或 VC++ 中导入 MinGW C++ DLL
【发布时间】:2011-05-29 08:46:18
【问题描述】:

我有一个带有源代码(约 20k 行)的 MinGW DLL,我需要在 CLR 中使用这个 DLL 中的一些类。起初我尝试为 C++ 类(我刚刚从源代码复制)编写 Manged C++ 包装类,并从 C# 中引用这个类。但是 VC++ 编译器和 MinGW 存在差异,因此本地代码编译时会出现一些错误!我在 C++ 和 ASM 方面没有什么丰富的经验,这会产生一些麻烦。

告诉我,有没有办法在 VC++ 或 C# 中导入 MinGW 类?

更新:

MingGW 和 VC++ 的区别:

  1. ASM 调用代码,如

asm("fnstcw %0\n" : "=m" (cw) : : "memory");
asm("fldl (%0)\n": : "r"(x): "st(7)"); };
asm("fstps (%0)\n": : "r"(x): "memory", "st");

不能在 VC++ 中编译。我从来没有写过比 MOV AX, BX 更难的汇编代码:)

  1. 它也执行 fortran 代码,我不明白如何:)

【问题讨论】:

  • 你能发布一些不同的例子吗?如果没有提供错误,很难检查它们。
  • 你会发现如果MinGW dll严重依赖GnuC类型,你需要将GNU头文件导入VC++才能使用该dll。您可能会发现编写一个使用 VC++ 友好界面的包装 dll 并在您的托管项目中使用它会很有帮助。

标签: c# .net visual-c++ mingw managed-c++


【解决方案1】:

几点:

  1. 您不能使用 C++ DLL,但您可以像使用任何其他本机 DLL 一样使用 C DLL。

    见:http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

  2. 关于代码 - 它改变了一些 FPU 选项,所以如果你想将它移植到 C#/.Net 您应该首先了解它的作用。

【讨论】:

  • 关于1:你能建议我手动如何在VC++ DLL中使用MinGW DLL吗?我从未认真编写过 C++ 代码,但我只知道一种导入 DLL 的方法:我有一个 .lib 文件,我编写了 #pragma comment(lib, "mylib.lib")。但是我项目的bin文件夹里没有lib文件!
  • 查看我在答案正文中添加的链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多