溢出社区,
在我的公司,我们希望摆脱Borland C ++ - Compiler和Embarcadero-IDE。为了慢慢地这样做,我想让每个Dialog成为使用Microsoft Visual Studio C ++ - Compiler编译的Dll。 现在在DLL中我有一个函数(这些函数应该弹出对话框,这里只是一个测试)
extern "C" GETSELOBJSHARED_EXPORT void printSelectedObject(IAtml *Atml);
IAtml是一个接口,用于对我们在Borland编写的Main-Application进行回调,在这个接口后面是一个在Borland编译的类Atml:public IAtml。我认为这可能因http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL#CppMatureApproach)而起作用。
现在,如果我从主应用程序中调用此函数,则如果printSelectedObject具有以下实现
,则它可以正常工作void printSelectedObject(IAtml *Atml)
{
int selectedObject = Atml->GetSelObj();
}
但我添加的任何行都会导致程序崩溃,例如
void printSelectedObject(IAtml *Atml)
{
OutputDebugString(L"Trying to call the Interface function!");
int selectedObject = Atml->GetSelObj();
}
接口只包含一个功能,所以
struct IAtml
{
virtual int GetSelObj() = 0;
}
那么为什么这项工作没有,是否有任何变通办法。我可以使用COM来实现相同的东西。任何帮助表示赞赏。