delphi如何与用c编译后的OBJ文件进行连接(100分)

Y

yyluo

Unregistered / Unconfirmed
GUEST, unregistred user!
我从网上下载了一个控制扫描仪的程序,它是使用C语言写的控制扫描仪的部分(一共有三个文件,一个C程序,两个头文件),然后又将其编译成OBJ文件,在DELPHI中使用{$L FILENAME.OBJ}的方式进行联接编译,因为我想改一些C的代码,所以就用VC5对这个C程序重新编译了一次,但是原来他提供的OBJ文件为69KB,而我编译后的OBJ文件只有40多KB,在用DELPHI编译时出错说文件格式不对.我把原来提供的OBJ文件打开看了,发现他是用的BC4编译的.后来我用BC5编译这个程序,结果它说错误太多无法编译.实在搞不明白.
在这里我有几个问题不清楚:
1.是否OBJ文件的格式不相同,也就是说用BC和VC编译出来的OBJ不能通用?
2.这个原来是DLL的程序在编译为OBJ时是否需要DEF文件?
不知有没有这方面的高手指点一二,如果搞清楚的话,以后就可以直接将DLL的功能编译到自己的程序中了,这样多好!
例程在->http://mail.med.upenn.edu/~nieves的MultiTWAIN.zip
 
J

jghuang

Unregistered / Unconfirmed
GUEST, unregistred user!
1.obj文件好像没有什么格式问题,BC,VC编译出来的OBJ不能通用,可能是因为要调用一些系统文件.
2.不需要.
 
Z

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
最好直接用DLL。
用OBJ的话,关键要求你的段必须是32位的。
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
1. VC 的 OBJ 是否与Delphi 通用? 试一下就知道了
2. 输出 OBJ 文件是不需要 DEF 的
 
Y

yyluo

Unregistered / Unconfirmed
GUEST, unregistred user!
对不起,我没有注意换行,再贴一遍,希望继续讨论,如果直接使用DLL的话,对于在DLL
过程中的程序如何控制?比如扫描仪在扫描完一幅图后需要将这个信息传给主程序来
处理,用CALLBACK行不行,发消息行不行?DELPHI中处理消息用什么方法,是不是WIN
API的那个模式?
顺便说一下这个控件我仔细看过他的CODE了,他所说的支持多页扫描是指代自动进纸
器的多页扫描,不是我理解的多页扫描.不合我用;-(.谁有好的控件能拿出来共享呀!
我觉得这里应该开辟一个CRACK版,@#$%@#$(先骂一声),洋鬼子的控件全要注册,就
算我想注册,没有信用卡也是没办法.我决定学习CRACK,以后自己动手丰衣足食!
啦啦啦...
原文:
我从网上下载了一个控制扫描仪的程序,它是使用C语言写的控制扫描仪的部分(一共
有三个文件,一个C程序,两个头文件),然后又将其编译成OBJ文件,在DELPHI中使用
{$L FILENAME.OBJ}的方式进行联接编译,因为我想改一些C的代码,所以就用VC5对
这个C程序重新编译了一次,但是原来他提供的OBJ文件为69KB,而我编译后的OBJ文件
只有40多KB,在用DELPHI编译时出错说文件格式不对.我把原来提供的OBJ文件打开看
了,发现他是用的BC4编译的.后来我用BC5编译这个程序,结果它说错误太多无法编译
.实在搞不明白.
在这里我有几个问题不清楚:
1.是否OBJ文件的格式不相同,也就是说用BC和VC编译出来的OBJ不能通用?
2.这个原来是DLL的程序在编译为OBJ时是否需要DEF文件?
不知有没有这方面的高手指点一二,如果搞清楚的话,以后就可以直接将DLL的功能编
译到自己的程序中了,这样多好!
例程在->http://mail.med.upenn.edu/~nieves的MultiTWAIN.zip
 
J

Johnney

Unregistered / Unconfirmed
GUEST, unregistred user!
我用编译开关曾经成功调用了.obj文件,你可以试试。
implementation
uses ...
var
...
function test: boolean;
external;
{$L you.obj}
...
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
If you have C++ source, translate to Pascal. If you can not translate
it, put it to this BBS, let some body translate it for you.
 
L

lhz

Unregistered / Unconfirmed
GUEST, unregistred user!
1.VC和BC的OBJ文件格式不同,BC用的叫做COFF,是INTEL定义的.
VC用的是另外一种格式,名字忘了,但肯定不能通用.不过有一个
工具可以将VC的OBJ转换为BC的OBJ.要让DELPHI用C文件,需要
用BC的编译器.
2.编译成OBJ不需要DEF.
3.编译错误太多通常是INCLUDE路径设置不对,或修改代码时某个
括号不匹配.检查一下.
 
Y

yyluo

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部