Delphi可以通过Obj文件调用一些API函数,想知道如何得到这个OBJ文件:
    1.使用test.pas文件的话,不管是使用Delphi编译器或者直接命令行模式该如何设置编译选项
    2.使用test.dll或者test.lib文件的话,该怎么做才能得到我要的Obj文件该怎么做该怎么做,急急急!请大家给予赐教,如果可以请说明详细点,如果能有个Sample更好,非常感谢!

解决方案 »

  1.   

    在Delphi 的Project 菜单Options项的Linker页的Linker Output中可以选择生成.dcu 还是C或C++的OBJ文件。
      

  2.   

    just like:implementationuses
      SysUtils;{$LINK 'regexp.obj'}function _regcomp(exp: PChar): PRegExp; cdecl; external;
    function _regexec(prog: PRegExp; str: PChar): LongBool; cdecl;
      external;
    function _reggeterror: Integer; cdecl; external;
    procedure _regseterror(Err: Integer); cdecl; external;
      

  3.   

    OBJ你可以直接用dcc32命令行编译pas,带参数 -J,不过这个中间文件是omf格式的,Delphi弄出来的都是这个格式,要装换成VC识别的coff obj,还得用rmcoff处理下
      

  4.   

    我就是要转换成功Delphi调用的obj文件,也要转换成VC识别的coff obj?
      

  5.   

    使用“bcc32 -O2 -H=$(BCB)\lib\vcl60.csm -Hc -Vx -Ve -x- -RT- -X- -a8 -b- -k- -vi -c -tWM  TestObj.cpp -oTestObj.obj”编译后生成的obj文件调用时产生下面的错误。
      [Error] test.pas(455): 16-Bit fixup encountered in object file 'D:\test\TestObj.obj'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@LStrFromPChar'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@HandleFinally'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@LStrCat3'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@LStrToPChar'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@LStrArrayClr'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@FillChar'
      [Error] test.pas(462): Unsatisfied forward or external declaration: '@@RandInt'
      

  6.   

    那就没办法了,Delphi识别的VC识别不了,VC转换过来Delphi不认……