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

  • 主题发起人 主题发起人 yyluo
  • 开始时间 开始时间
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
 
1.obj文件好像没有什么格式问题,BC,VC编译出来的OBJ不能通用,可能是因为要调用一些系统文件.
2.不需要.
 
最好直接用DLL。
用OBJ的话,关键要求你的段必须是32位的。
 
1. VC 的 OBJ 是否与Delphi 通用? 试一下就知道了
2. 输出 OBJ 文件是不需要 DEF 的
 
对不起,我没有注意换行,再贴一遍,希望继续讨论,如果直接使用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
 
我用编译开关曾经成功调用了.obj文件,你可以试试。
implementation
uses ...
var
...
function test: boolean;
external;
{$L you.obj}
...
 
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.
 
1.VC和BC的OBJ文件格式不同,BC用的叫做COFF,是INTEL定义的.
VC用的是另外一种格式,名字忘了,但肯定不能通用.不过有一个
工具可以将VC的OBJ转换为BC的OBJ.要让DELPHI用C文件,需要
用BC的编译器.
2.编译成OBJ不需要DEF.
3.编译错误太多通常是INCLUDE路径设置不对,或修改代码时某个
括号不匹配.检查一下.
 
多人接受答案了。
 
后退
顶部