手头有别人用c写的一个dll文件,外带一个lib文件和一个.h文件,.h里有他提供的供外部调用的函数的声明。因为dll映射到进程空间的时候只有一个实例供所有的线程使用,所以我想把他改成一个c++的类,这样就可以生成多个实例了,单不知道怎么改啊?只改他的.h文件成吗?

解决方案 »

  1.   

    只改.h文件成应该不行吧!
    没有原程序好象挺不好办的。
    我想了一个笨方法:遍历进程,然后检索进程的模块,看是否加载了该dll。
    速度慢点,看看楼下的都有什么好方法。
      

  2.   

    自己再写个DLL,然后在里面用共享内存的方法保存你想保存的DLL的实例句柄,这样一来,其它的进程也就可以使用了.还有就是可以封装成类,这样做:写个类叫A,里面声明一个这个DLL的实例句柄的指针,类A就叫做"句柄类",然后写类A的成员函数,执行这个DLL的导出函数就行了,然后记得在类A的析构函数里::FreeLibrary(...);其实最好的方法就是将这个DLL做成COM组件,通过COM组件的标准列集机制和散集(不用你管,除非自己写列集机制和散集机制),就能实现其它进程使用.
      

  3.   

    这是我多次写这种功能总结出来的,最终还是写成COM比较好用,也实用.