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

Nik*_*s R 4 c++ windows dll g++ visual-c++

我使用Visual C++编译器编译的应用程序.它可以以一种形式加载插件.dll.它究竟是什么确实无关紧要,事实是:

UML图

这包括调用函数.dll返回指向Applications API对象的指针等.

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

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

PS:我使用MINGW GNU G ++

Ker*_* SB 6

只要应用程序和DLL都在同一台机器上编译,只要它们都只使用C ABI,你应该没问题.

你当然不能做的是分享任何类型的C++构造.例如,您不能new[]在主应用程序中使用数组并将DLL放入delete[]其中.那是因为没有固定的C++ ABI,因此任何给定的编译器都无法知道不同的编译器如何实现C++数据结构.对于不与ABI兼容的不同版本的MSVC++,情况甚至如此.