我使用并使用 Visual C++ 编译器编译的应用程序。它可以以 .dll
的形式加载插件。它到底做了什么并不重要,事实是:
这包括从 .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/