社区
语言基础/算法/系统设计
帖子详情
{$L xxx.obj}为什么不能是cpp编译的obj,只能是c编译的obj?
makefool
2004-12-18 05:31:15
delphi的unit "use_c.pas"源代码:
{*****************************************************}
unit use_c;
interface
implementation
function GetGlobalValue: integer;
stdcall;
external;
{$L cuse.obj}
end.
{*****************************************************}
cpp文件"cuse.cpp"的源代码:
{*****************************************************}
int iGlobal = 0;
extern "C" int _stdcall GetGlobalValue(void)
{return iGlobal;}
{*****************************************************}
delphi版本7.0,c++编译器为bcc32 5.5.1(borland的freecommandtool)
命令行为
bcc32 -c cuse.cpp
delphi报Unsatisfied forward or external declaration: 'GetGlobalValue'的错
如果把cuse.cpp名字换成cuse.c
bcc32 -c cuse.c
delphi就能编译成功
tdump两个obj文件可以发现
1、使用cpp为的编译结果是
0000A7 COMDEF
Name: 1: 'GetGlobalValue' virtual(_TEXT) Length: 000a bytes
0000BD PUBDEF '_iGlobal' Segment: _DATA:0000
2、使用cpp为的编译结果是
0000A1 PUBDEF '_iGlobal' Segment: _DATA:0000
0000B3 PUBDEF 'GetGlobalValue' Segment: _TEXT:0000
这个就搞不懂了,尝试了bcc32的多个编译选项,依然不能成功。
关键的希望能用cpp编译的obj
...全文
114
2
打赏
收藏
{$L xxx.obj}为什么不能是cpp编译的obj,只能是c编译的obj?
delphi的unit "use_c.pas"源代码: {*****************************************************} unit use_c; interface implementation function GetGlobalValue: integer; stdcall; external; {$L cuse.obj} end. {*****************************************************} c
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yxf
2004-12-19
打赏
举报
回复
Mark
这里是公共机房,回去再帮你看。
makefool
2004-12-19
打赏
举报
回复
新的发现,换了bcc 5.02编译cpp文件居然能用delphi联接了。
同是borland的产品,为何如此?
提问了2天,回复为0,让人郁闷。
C/C++语言中全局变量重复定义问题的解决方法
前言 在C语言中使用extern 关键字来定义全局变量的时候,我们需要在.h文件和.c文件中重复定义,这种重复,导致了出错几率的增加。 今天,在整理自己的代码的时候,考虑到我写的代码从一至终都是在一个
cpp
文件里面。于是,想把自己的代码中的各个模块分离开来,以便更好地阅读和管理。 遇到的问题 我的做法是: 宏定义、结构体定义、函数声明以及全局变量定义放到一个head.h头文件中 函数的定义放到head.
cpp
中 main函数放到main.
cpp
中 然而却报错了,提示
xxx
变量在*.
obj
文件中已定义 问题出现的原因 为什么会出现这种情况呢? 首先单个文件的
编译
是独立的
关于.c .
obj
.
cpp
.exe区别
1. 编辑源代码 代码在.c 和 .h头文件中写好了以后, 从.c 和.h文件
编译
成.
obj
文件 命令: cl /c
xxx
.c -->
xxx
.
obj
2.
编译
源文件 代码被
编译
为二进制文件.
obj
以后, 打包一些调用的库, 链接成.exe可执行文件 命令: cl
xxx
.c -->
xxx
.
obj
and
xxx
.exe 3. 链接生成应用程序 ...
Windows版YOLOv4-tiny目标检测实战:训练自己的数据集
课程演示环境:Windows10 需要学习Ubuntus系统YOLOv4-tiny的同学请前往《YOLOv4-tiny目标检测实战:训练自己的数据集》 YOLOv4-tiny来了!速度大幅提升! YOLOv4-tiny在COCO上的性能可达到:...
error LNK2005:“
XXX
已经在
XXX
.
obj
中定义
error LNK2005:"
XXX
已经在
XXX
.
obj
中定义 目前在处理祖传代码,由于未创建头文件,我直接在main.
cpp
中#include "xx.
cpp
"导致出现错误报告 错误 LNK2005 “int __cdecl playMain(void)” (?playMain@@YAHXZ) 已经在 play.
obj
中定义 在这种情况下,在调用函数前加了static ,
编译
成功且调用函数成功。 所以有了疑问,一般来说定义的函数前为extern才可以被其他
cpp
文件调用,为何用了static才能成
visual studio2017
编译
工程包遇到找不到
xxx
.
obj
文件怎么操作?
1.遇到这种错误,作为一个小白一般会试错很多回,没事慢慢就习惯了,接下来我要说一下我如何解决的,就文件放置的位置出现了问题 把整个工程包按包含目录那样子放置再打开就不会出现问题,例如我的就是把整个工程包放置在D盘就可以直接运行了 ...
语言基础/算法/系统设计
16,748
社区成员
33,247
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章