c++ - 在VC++编译的应用程序中使用G++编译的DLL(插件)会出现什么问题?

标签 c++ windows visual-c++ dll g++

我使用并使用 Visual C++ 编译器编译的应用程序。它可以以 .dll 的形式加载插件。它到底做了什么并不重要,事实是:

UML Diagram

这包括从 .dll 调用返回指向应用程序 API 对象指针的函数等。

我的问题是,当应用程序从 .dll 调用函数、从中检索指针并使用它时,可能会出现什么问题。例如,我想到的是指针的大小。 VC++和G++有区别吗?如果是,这可能会使应用程序崩溃?

我不想使用 Visual Studio IDE(不幸的是,这是使用 Applications SDK 的“首选”方式)。我可以将 G++ 配置为像 VC++ 一样编译吗?

PS:我用的是MINGW GNU G++

最佳答案

只要应用程序和 DLL 都在同一台机器上编译,并且只要它们都只使用 C ABI,就没问题。

您当然不能做的是共享任何类型的 C++ 结构。例如,您不能在主应用程序中new[] 一个数组,而让DLL delete[] 它。这是因为没有固定的 C++ ABI,因此任何给定的编译器都无法知道不同的编译器如何实现 C++ 数据结构。这甚至适用于不兼容 ABI 的不同版本的 MSVC++。

关于c++ - 在VC++编译的应用程序中使用G++编译的DLL(插件)会出现什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9136127/

相关文章:

C++ w/静态模板方法

c++ - 不使用三角函数旋转 vector

php - 安装 php_svn windows & linux

c# - 当我在文本框中输入时发出烦人的哔哔声

c++ - 在类构造函数中动态分配内存

C++ - 无法在 main 中调用友元函数?

c++ - 错误 C2512 : 'LayerTwoTree' : no appropriate default constructor available

javascript - 在运行时动态创建和存储算法

windows - ColdFusion 9 集群与 IIS7.5

c++ - Qt 在屏幕上正确放置新窗口,鼠标居中,移入屏幕