比如WindowsMedia SDK、DirectX、Winsock2 API/SPI等等都供了C++用到的.H、类库或DLL等。那么在Delphi中如何使用C++中的各种struct、typedef、#define或class?难道非得重新将其改写为Type、Record不可吗?
望各位指教!谢谢!

解决方案 »

  1.   

    用loadlibrary
    就可以调用了
      

  2.   

    这个问题的确愚蠢,C怎么调用,Delphi就怎样调用,上面说的是动态连接,你还可以静态连接,你看看Delphi的源文件,他们是怎样弄的。你最好先把Pascal的语法弄懂,然后把所有的保留字的含义看一遍。
      

  3.   

    还有DirectX用的Com,调用方式有点不一样,不过等同于DLL的调用,不过提供了简单的API帮助你调用,应该说不是调用,而是建立Com对象。Co开头的API你可以看看。Directx还提供了直接生成接口的API
      

  4.   

    其实我的问题不是如何高用DLL中的函数,而是SDK中提供的各种.h文件中包含了很多预定义#define、常量const和结构struct或类class还有许多typedef。
    那么我用Delphi开发时,对这些#define、const、struct、class、typedef是不是要用Delphi或者说用object pascal的语法重新定义,不可能直接用引用C/C++语法的定义(申明)吧?自己重新定义的话不是太麻烦了吗?
      

  5.   

    大部分的C的定义,Delphi当中都包含了Pascal的定义。有些没有的,有一个官方网站,提供了几乎全部API的PAscal的定义。这个网站的名字我忘记了,该死的收藏夹,好难分类,这是IE的一个垃圾。你在论坛上面发言直接询问这个网站,应该有很多的人知道。
      

  6.   

    就象上面说的用loadlibrary就行,不过要是用到一些结构体只能自己写了,在这里我想问个问题,我用delphi调用wincap的函数老是了错(可以调用成功,但是程序老是出错)
      

  7.   

    动态的使用loadlibrary
    静态的直接Import到工程 StdCall就是了操作系统的底层编程,Delphi一样管用!
    Delphi可以使用ASM的
    其实本质都是ASM+API,管你是VC还是Delphi
      

  8.   

    如果使用Delphi中没有帮你声明的API也只能自己写声明了,动态调用也一样,起码要知道参数的个数与类型,该声明的struct还是得声明,我觉得工作量上差不多的
      

  9.   

    请问各位高手怎样在Delphi中调用VB编写的DLL呢?我试过在VB中调用Delphi写的Dll是没问题,但用Delphi调用VB的则老是失败,不知为何?
      

  10.   

    VB的是ActiveX DLL,和普通的DLL不同,因为ActiveX DLL不导出函数