c# - 使用使用不同编译器编译的 DLL

标签 c# c dll

我目前正在编写一个 C# 应用程序,该应用程序使用 C++/CLI 来利用不是由我创建的用 C 编写的库。该库被编译成 DLL,然后在 C++ 包装器内部的 C# 项目中引用(我知道很啰嗦)。

问题来了;如果我使用 MinGW 将 C 库编译成 DLL(该库提供了 GCC makefile),那么代码将按预期工作并产生正确的输出(这是通过命令行测试的)。但是,如果我将所有库头文件和源文件包含到 Visual Studio 中的 C 项目中并使用 MSVC 编译器进行编译,我会得到 Read Access Violation深入到库代码中。

现在我可以(并且可能应该)调试该库以找出问题所在,但它是用相当低级的 C 语言编写的,我对此没有太多经验;所以我的问题是,如果我使用 MinGW 将库编译成 DLL,然后在使用 MSVC 编译的项目中引用该 DLL,是否可以解决问题?

最佳答案

听起来你正在路上。这是您成为专家开发人员的机会 - 没有捷径。在 Visual Studio 中单步调试代码,当遇到不理解的代码时,进行调查。如果您花费超过 2 小时试图理解特定内容,请休息一下,调整您的调查(即尝试遵循不同的线索,尝试不同的搜索词)。尽可能地继续前进,不要让自己陷入困境。 C 语言特别透明——没有什么魔力。你能行的。你会很高兴你这么做了。特别是理解 C 语言是值得付出努力的。任何事物。您可以用代码完成的任何事情都可以用 C 语言完成(解释)。 C 是计算机语言的罗塞塔石碑。开始吧。让我们知道进展如何。

关于c# - 使用使用不同编译器编译的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286140/

相关文章:

c# - 创建 C# LINQ 可选连接扩展

arrays - 使用 C 将一维字符数组复制到二维字符数组

c - Arduino 上的左右红外运动传感器

c++ - 我可以以在加载时可以删除的方式加载 dll 吗?

c# - LINQ 和 Entity Framework - 避免子查询

c# - 跨平台 C 代码和防止垃圾回收

c# - 如何正确更改 WPF 中的 XBim 标准墙颜色

c - 对数组 C 使用 getchar 的困难

c++ - 跨 DLL 边界使用单例

c++ - 有没有办法找到一个dll暴露的所有功能