因为客户提供了两个dll,这两个dll中都有函数GetPoint(),但是参数列表不一样,而两个头文件中又声明为extern "C" ,
由于C语言不支持重载机制,所以就抛错了,而我又想把这两个函数都用到同一个工程中,怎么办呢?
解决方案:
动态加载dll,将其中一个头文件中的GetPoint函数声明为函数指针:
extern "C" typedef int (*MyGetPoint)(int, int);
引用时,
QLibrary MyDll("DLL");
if (!MyDll.load())
return;
MyGetPoint MyGetPoint = (MyGetPoint)MyDll.resolve("GetPoint");
if (!MyGetPoint)
return;
int result = MyGetPoint(10, 10);