FPC: file not recognized: 文件格式无法识别

FPC: file not recognized: file format not recognized

我有一些东西需要 link 一些 C++ 代码到主 Pascal 程序。我关注了这个tutorial,现在我有:

download.h

#include <iostream>
#include <curl/curl.h>
using namespace std;

// function goes here
int downloadsrc(char* pkg_name){
   // do stuff
}

download.pas:

unit download;
{$link download.obj} // fpc may overwrite download.o
Interface
uses ctypes;
function downloadsrc(pkg_name:string):integer;
Implementation
// I leave this empty
end.

我的主程序:

program myprog;
uses
    warn, download, test;
var i:integer;
begin
    if ParamCount = 0 then help()
    else for i:= 1 to ParamCount do
    begin
       if ParamStr(i) = 'download' then downloadsrc(ParamStr(i+1))
       else if ParamStr(i) = 'test' then test();
    end;
end.

我尝试用 g++ 编译 .h 文件,更改输出..但是当构建程序 FPC 时说:

download.obj: file not recognized: file format not recognized

手动编译 download.pas 仍然有效。 我在这里做错了什么吗?我是否需要做一些其他事情,比如添加编译标志或修改代码?

FPC 和 GCC 一样,使用 COFF 对象。确保您的 .obj 是 COFF 而不是 OMF。

如果你解决了这个问题,你可能还必须 link 一些 C++ 运行时库,并以 C 可调用方式声明 downloadsrc,并更改 FPC 声明以匹配 (cdecl)