使用不同编译器编译的DLL

本文关键字:编译 DLL 编译器 | 更新日期: 2023-09-27 18:15:10

我目前正在编写一个c#应用程序,该应用程序使用c++/CLI来利用不是我自己创建的C编写的库。这个库被编译成一个DLL,然后在c#项目中引用,在一个c++包装器里面(我知道很长)。

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

现在我可以(也许应该)调试库以找出问题所在,但它是用相当低水平的C编写的,我没有太多经验;所以我的问题是,如果我使用MinGW将库编译成DLL,然后在使用MSVC编译的项目中引用该DLL,会解决问题吗?

使用不同编译器编译的DLL

听起来你已经在路上了。这是你成为专业开发人员的机会——没有捷径可走。在Visual Studio中逐步完成代码,当您遇到不理解的代码时,请进行调查。如果你花了超过2个小时的时间去理解某件具体的事情,那就休息一下,调整一下你的调查(比如,尝试不同的线索,尝试不同的搜索词)。尽可能地坚持下去,不要让自己陷入困境。C语言是特别透明的——没有魔法。你能做到的。你会很高兴你这么做了。特别值得努力去理解C语言。任何东西。任何可以用代码完成的事情都可以用C语言完成(解释)。C语言是计算机语言中的罗塞塔石碑。开始。