我有一个VC编写的动态链接库(*.dll和*.lib),在Delphi下无论是用静态调用还是用动态调用,都不成功.请问可不可以在C/C++ 做什么之后调整,可以让Delphi 调用.
急急急

解决方案 »

  1.   

    extern "C"
    {
      DWORD WINAPI dosomething(char * str)
      {
        //do some thing
        return 1;
      }
    }
    必须要extern "C"
    还有最好在*.def中定义导出表
    LIBRARY MYLIB
    EXPORTS
      dosomething
      

  2.   

    exu(大脸猫)  你给的这些代码是在Delphi写还是在C写的啊
      

  3.   

    還可以這樣。。in C++extern "C" declspec(dllexport) int __stdcall HelloDll(int i)
    {
      return (i+1);
    } 調用
    in delphi
    functin HelloDll(i: Integer):Integer; stdcall; external in 'aa.dll' name 'HelloDll'; // 靜態調用
      

  4.   

    这个要看调用约定!你把VC写的DLL中函数的声明贴出来看看!
    一般的Windows中的DLL都用的是stdcall调用,这个调用参数从右到左进入,然后由函数清理栈,偶最喜欢这种方式了!!!!
      

  5.   

    比如:
    DLL:
         int WINAPI FunName(int lParam){
                   ......
         }
    调用端声明:
         function FunName(lParam:integer):integer;stdcall;external'DllName.Dll'