vb写的DLL为check.dll 其中有函数FreeCode("102"),返回值0 或 1;
我在程序这样写
 typedef bool (*FUNC)(CString);
 FUNC func;
 HINSTANCE hLibrary=::LoadLibrary("CHECK.DLL");
 if(hLibrary)
 {
   func=(FUNC)::GetProcAddress(hLibrary,"FreeCode");
   if(func("102")) //出错 a
   {
      ....
    } 
 }
在执行到if(func("102"))出错,提示"unhandled exception in 
  loginexe::ox0000005:access violation"
写成if(func)通过可如何调用函数?

解决方案 »

  1.   


    客户给我check.dll 其中有函数 void getmessage();
    我把check.dll放到debug目录中,在VC中这样写:#include <ole2.h>
    #include <comutil.h>// 指示链接 comsupp.lib 库. 这个库是 comutil.h 需要的.
    #pragma comment(lib, "comsupp.lib")// #import 预处理指令导入指定的类型库.
    #import "e:\debug\check.dll"int main()
    {
        //初始化 COM
        CoInitialize(NULL);    //创建智能指针对象, 用 ProgID "check.Class1" 作为构造函数参数.
        check::_Class1Ptr ptrclass1("check.Class1");
        if (ptrclass1 != NULL) {        //调用方法
            ptrclass1->Hello();
                    //注意, 在使用完后, pclass1 不需要调用 Release, 因为它是智能指针, 
        }    CoUninitialize();
    }这样也编译不过,说check.tlh中错误,提示少;注意check.dll是用VB写的。
      

  2.   

    你别试了没用的 VB编写的DLL是基于COM接口的 需要象调用COM一样去调用
    明天我给你一个例枝OK
      

  3.   

    我的email: [email protected]