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)
我有一些东西需要 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)