问题描述:
我写了一个应用程序,需要调用几个Dll,一共有3个,包括a.dll ,b.dll, c.dll;
其中,我的应用程序直接调用a.dll,同时在应用程序里面做设置来选择需要最终调用b.dll还是c.dll之中的内容,b.dll和c.dll是被a.dll静态调用的,还有一点,b.dll和c.dll之中的函数名字基本都是一样的;
请问我如何在a.dll之中做操作,来完成dll的选则和调用?多谢了!
我写了一个应用程序,需要调用几个Dll,一共有3个,包括a.dll ,b.dll, c.dll;
其中,我的应用程序直接调用a.dll,同时在应用程序里面做设置来选择需要最终调用b.dll还是c.dll之中的内容,b.dll和c.dll是被a.dll静态调用的,还有一点,b.dll和c.dll之中的函数名字基本都是一样的;
请问我如何在a.dll之中做操作,来完成dll的选则和调用?多谢了!
=============================
不懂,dll还能静态调用吗?
要换个方法
1)做成COM接口,可现在很少用COM了
2)改成MFC扩展DLL,用类把导出函数包装起来,再加个虚类做派生。b,c两个类名不同。
然后在a中选择new某个类,得到虚类指针。就行了。
实现:
1,b.dll和c.dll的导出函数要一样
2,主程序只能链接其中一个lib,如b.lib。你要链接两个话的话必然会函数名相同冲突
另外要链接一个叫DelayImp.lib的lib,并增加链接选项/DelayLoad:b.dll
3,在选择DLL前不要调用任何b.lib中的函数。
4,若选择用c.dll,就把c.dll复制成b.dll。然后就可以开始调用b.lib中的函数了,主程序这时会加载d.dll(实际上它是c.dll)
5,若选择用b.dll,那就不用说了。