如何使用指针调用外部函数?

时间:2015-08-17 17:27:14

标签: c++

我的插件是从主机应用程序调用的。这个宿主应用程序向我的插件发送一些函数地址,插件需要执行这个外部函数。

主机应用程序是用Delphi编写的,我的插件是用C ++ Borland Builder编写的。

插件初始化过程称为 PLUGIN_INIT ,并由主机应用程序调用。

外部函数地址作为 params 数组的第6个元素提供。此函数有一个输入char *参数,它返回void *指针。所以,所有代码都是这样的:

typedef void *(*F)(char *); // external function type

extern "C" __declspec(dllexport) bool WINAPI PLUGIN_INIT(int *params) {

   F func = (F)*(params + 5); // here I get function address
   try {

      void *retValue = func("input_value"); // trying to call external function
   } catch (...) {

      printf("error");
   }
}

结果,我总是收到“错误”消息。可能是什么问题?其他用Delphi编写并使用类似声明的插件工作正常。

修改

在调试器中检查显示 func 函数指针指向充满零的内存。

0 个答案:

没有答案