none
动态调用封装函数类的DLL 2008 RRS feed

  • 问题

  • 我有一个DLL,是外部语言开发的,DLL中的函数以类的形式进行了封装。导出时可通过类进行调用,这在外部语言中已测试通过,所有功能正常使用。

    现在我想通过C++(32位应用,非NET)来实现对这个DLL中类的(动态装入DLL)使用,如何实现。最好有实例代码。

      学习中

    2013年3月20日 2:56

全部回复

  • 是不是太简单了?还是人们不需要这样显式动态库的联接方式?
    • 已编辑 YFLK 2013年3月21日 4:41
    2013年3月21日 2:33
  • 如果你的DLL是程序集

    可通过COM的方式调用该程序集中的方法,不知道什么是COM也没有关系,可以参考这篇文章

    http://blog.csdn.net/silverice/article/details/2004450

    如果你的DLL是不同的C++动态库

    如果要使用动态装载,可以通过LoadLibrary获得DLL句柄,然后通过GetProcAddress获得所调用DLL函数的函数指针。不要忘记使用后调用FreeLibrary释放资源。


    麻烦把正确答案设为解答。

    2013年3月21日 3:11
    版主
  • LoadLibrary、GetProcAddress、FreeLibrary这些API我会使用,但不知道如何通过GetProcAddress(handle,"类名“)来获得类的实例,再通过类的实例与函数的关联实现对所有类中函数的使用。就象这样

       Myclass = GetProcAddress(handle,"类名")

       Myclass::Func1(......)

       Myclass::Func2(......)

       Myclass::Func3(......)

       Myclass::FuncN(......)

    类的接口定义已经有了。如何实现?

    2013年3月21日 7:29
  • 只能显式导出函数,不能导出类,如果要使用类。就要用隐式的方法了。在工程中加link lib。


    麻烦把正确答案设为解答。

    2013年3月21日 9:43
    版主
  • 如果是好用的那直接用就可以啊

    你的问题是什么呢

    关于VC使用DLL有很多资料可以参考

    http://www.cnblogs.com/c1230v/articles/1401448.html


    新浪微博http://weibo.com/xianglitian,欢迎围观

    2013年3月23日 2:07
  • 有关DLL的调用确实有很多的资料可以参考。网上俯拾即是!相关的书籍也不少。

    但应用DLL时动态装入带有类的库的介绍我一直在找,书籍、网络都找过,基本大同小异,没有能解决我问题的。可能是我心不诚吧,说句自嘲的话“人品”问题。我真正接触C++的时间还不到一个月,请勿见笑。没办法读书人就这样爱刨根问底。

    真心希望高人出手相助。相信MSDN论坛中有这样的高人,只是我英文没学好,否则一定能在英文圈子中找到。

    我真想不通,这样的需求就没有人遇到过?

    2013年3月24日 2:58
  • “只能显式导出函数,不能导出类,如果要使用类。就要用隐式的方法了。在工程中加link lib。”

    这好像说不通,用其它的工具也以实现类的动态导出,为什么C++实现不了,还是因为它出现的太早了?

    2013年3月25日 4:59
  • 这个问题我自己解决了一半。就是实现了在DLL中封装函数类的动态调用(不是楼上所说的静态Lib方式,动态方式的灵活性相信大家都知道)。但是是在同一开发语言下实现的,不同语言封装函数类DLL的调用不成功。不知问题出在那。
    2013年4月2日 0:40