我想调用一个dll中的函数。该dll用vc6开发。在c语言中的声明为
//RISG API Send Command to Reader Circuit
extern "C"__declspec(dllimport) void WINAPI Func_Command_Reader_Circuit(int RISG_Flag, CString RISG_Ckt);
请问我在VB中能调用它吗?该怎么调用?

解决方案 »

  1.   

    可以用,但是比较麻烦。你得在VB中提供CString的类型定义才能用Type CString
     ...这里面不知道怎么写...
    End Type
    函数要这样申明:
    declare sub Func_Command_Reader_Circuit lib "xxx.dll"(byval RISG_Flag as long, RISG_Ckt as XString)
      

  2.   

    比较困难,因为它被定义成__declspec,而不是__stdcall。堆栈约定不同,所以不能用标准的办法调用。建议用C再写一个dll包装这个函数。
      

  3.   

    declspec(dllimport) 是向编译器指示这个函数是导出函数,winapi是指调用约定,winapi就是__stdcall.
    vb中无法定义这个结构,一个可行的方法是写一个mfc dll,利用它来构造cstring,再进行传递。