关于WIN32的汇编和C++的混编问题?

天轶_1 2003-10-18 06:16:19
我用BORLAND C++ BUILDER和VC6。0分别写了一个小函数,编译成OBJ后用MASM32调用
居然调用不了,会出错,我有在函数前面加下划线(_),究竟是为什么?向各位高手请教了,请问如何解决?谢谢。
...全文
33 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
天轶_1 2003-10-20
  • 打赏
  • 举报
回复
有没有OMF转COFF的?
天轶_1 2003-10-19
  • 打赏
  • 举报
回复
不好意思,我吧“C”的C小写了,大写后可以编译了,但是MASM32那边还是通不过。
天轶_1 2003-10-19
  • 打赏
  • 举报
回复
不行啊,在extern处提示
[C++ Error] Unit1.cpp(10): E2059 Unknown language, must be C or C++
我用的是CB5。0
天轶_1 2003-10-19
  • 打赏
  • 举报
回复
没有加,好吧我试看看。
xiaonian_3654 2003-10-19
  • 打赏
  • 举报
回复
cui太厉害了,崇拜ing,原来是我一瓶子不满,半瓶子晃荡,
蚊子王 2003-10-19
  • 打赏
  • 举报
回复
borland的OBJ,LIB文件格式和MS的不同,前者是OMF,后者是COFF
用BCB带的coff2omf(在bin下可以找到)转换一下
天轶_1 2003-10-19
  • 打赏
  • 举报
回复
我把它帖上来,这是MASM32的ASM文件.
.586
.model flat, stdcall
option casemap :none
extern _ok:near

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib

.data
.code

start:
call _ok
invoke ExitProcess,0

end start

这是C文件.CB5.0写的:

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
extern "C" void __stdcall ok();
void __stdcall ok()
{MessageBox(NULL,"mess is ok","ok",MB_OK);
}
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
请帮看看哪里有错?
天轶_1 2003-10-19
  • 打赏
  • 举报
回复
编译的时后
MASM32那边提示:failure during conversion to COFF:file invalid or corrupt
xiaonian_3654 2003-10-19
  • 打赏
  • 举报
回复
MASM那边不用加啊,这个叫做名字分裂规则
xiaonian_3654 2003-10-18
  • 打赏
  • 举报
回复
有没有 extern "C"?
要是没有就当然连接不成功了
蚊子王 2003-10-18
  • 打赏
  • 举报
回复
在C++函数申明里要加extern "C",否则函数不是前面加下划线那么简单了。
天轶_1 2003-10-18
  • 打赏
  • 举报
回复
我有用EXTERN说明,还有我不想用DLL来实现,那样太麻烦了。但是我在BC写的OBJ却能在别的BC程序中一起编译调用。

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧