我有2个图书馆。库A用C编译。库B用C ++编译,但主要是C代码。
我需要在库A中调用以下函数:
foo* c_func(int64_t (*ptr_to_func)(void));
这个功能的第一件事是:
if(!ptr_to_func)
return NULL;
ptr_to_func需要指向库B中的一个函数,该函数声明为:
int64_t bar(void);
我有一个带有调用另一个函数的main函数的cpp文件,在那里我执行以下操作:
foo* f = c_func(bar);
然后我检查f是否为空。它是。
我做错了什么?
答案 0 :(得分:4)
您正在做的事情似乎是正确的,但需要注意的是,您的函数bar()
应在extern "C" {
部分内声明。
c_func()
可能会返回NULL
。在调试器中逐步执行它并查看(在c_func()
开头设置断点)。