[Linker Fatal Error] Fatal: Unable to open file 'GRAPHICS.OBJ'

kezhu 2004-08-16 02:23:55
这个错误信息是怎么回事?

这是一个dll程序,用到了Graphics::TBitmap,为了能在没有CB环境的机器上运行,在Project->Options->Packages中将Build with runtime packages的对勾去掉,结果就Link不过了,有这个对勾时是好的,不知为什么?exe好像没有这个问题。
...全文
473 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnrealboy 2004-08-31
  • 打赏
  • 举报
回复
楼主,你的错误应该试你的系统引起的。
具体原因不好说。
因为你的代码正常的机器可以通过。
没有任何错误——除了最初的那个,看看你的短消息把。
kezhu 2004-08-31
  • 打赏
  • 举报
回复
ding
kezhu 2004-08-27
  • 打赏
  • 举报
回复
依然不行,link错误更多了
Build
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::ConnectEvents(const System::DelphiInterface<System::IInterface>)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::DisconnectEvents(const System::DelphiInterface<System::IInterface>)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__tpdsc__ Oleserver::TOleServer' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external 'Oleserver::TOleServer::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::~TOleServer()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::Loaded()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__stdcall Oleserver::TOleServer::QueryInterface(const _GUID&, void *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::TOleServer(Classes::TComponent *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
[Linker Error] Unresolved external '__fastcall Oleserver::TOleServer::GetServer()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCB2KAXSERVER.LIB|Outlook_2K_SRVR.cpp
在source\vcl目录下生成了graphis.obj,拷贝到工程目录下,在工程中删除graphics.pas,添加graphics.obj,再link,但还是上面的错误,为什么?
cnrealboy 2004-08-26
  • 打赏
  • 举报
回复
然后你再移去那个pas试一试,应该还是能够编译通过,原因就在于你编译以后获得了一个obj文件,以后你的其他工程也可能不再需要添加了。

正如我在2楼所说的,而楼主却没有尝试。

btw:我是看见楼主没有结贴,看一下是不是问题没有解决,我原来以为楼主问题早就应该解决了。
cnrealboy 2004-08-26
  • 打赏
  • 举报
回复
你选择添加文件-〉更改类型为*.pas->转移到目录source下的vcl选择graphics.pas->打开

就可以了,你试一下,不行再找我。
kezhu 2004-08-25
  • 打赏
  • 举报
回复
to:xcling00()
1,需要手工包含什么lib文件,系统的.h或.hpp中都应该包含了吧,因为在一个exe工程中这样使用是没有问题的。
2,已经这样做过了,结果还是一样。
3,没有自动打开的cpp,我都是在Project Manager中选择cpp打开。拷贝到其他目录也一样,只要还是dll工程。

to:PPower(月亮光光,照地堂)
两个都加上了,还是一样。
勉励前行 2004-08-24
  • 打赏
  • 举报
回复
加上這一句:
#pragma link "jpeg" //或者 vcljpg.lib

kezhu 2004-08-24
  • 打赏
  • 举报
回复
程序其实很简单,就是利用cb下的bmp和jpg转化方便做的一个dll(vc下调用方便),工程创建时用的是默认选项:use vcl,options中只是把Build with runtime packages的对勾去掉,其它未改,就link失败了,程序如下:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <windows.h>
#include <JPEG.hpp>
#pragma hdrstop
//---------------------------------------------------------------------------
// Important note about DLL memory management when your DLL uses the
// static version of the RunTime Library:
//
// If your DLL exports any functions that pass String objects (or structs/
// classes containing nested Strings) as parameter or function results,
// you will need to add the library MEMMGR.LIB to both the DLL project and
// any other projects that use the DLL. You will also need to use MEMMGR.LIB
// if any other projects which use the DLL will be performing new or delete
// operations on any non-TObject-derived classes which are exported from the
// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
// the file BORLNDMM.DLL should be deployed along with your DLL.
//
// To avoid using BORLNDMM.DLL, pass string information using "char *" or
// ShortString parameters.
//
// If your DLL uses the dynamic version of the RTL, you do not need to
// explicitly add MEMMGR.LIB as this will be done implicitly for you
//---------------------------------------------------------------------------

extern "C" __declspec(dllexport) long _stdcall ConvertPic(IN long Mode, IN char *srcData, IN long srcLen, OUT char *tagData, OUT long *tagLen);
#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
return 1;
}
//---------------------------------------------------------------------------
long _stdcall ConvertPic
(
IN long Mode, //0:JPG->BMP,非0:BMP->JPG
IN char *srcData, //源图片数据
IN long srcLen, //数据长度
OUT char *tagData, //目标图片数据
OUT long *tagLen //数据长度
)
{
long lRet=0;
Graphics::TBitmap *bmp=new Graphics::TBitmap();
TJPEGImage *jpg=new TJPEGImage();

TMemoryStream *ms=new TMemoryStream();
ms->Write(srcData,srcLen);
ms->Position=0;

TMemoryStream *ms1=new TMemoryStream();
try
{
if(Mode==0)
{
jpg->LoadFromStream(ms);
bmp->Assign(jpg);
bmp->SaveToStream(ms1);
}
else
{
bmp->LoadFromStream(ms);
jpg->Assign(bmp);
jpg->SaveToStream(ms1);
}
*tagLen=ms1->Size;
ms1->Read(tagData,*tagLen);
}
catch(Exception &e)
{
//e.Free();
lRet=-1;
}
delete ms1;
delete ms;
delete bmp;
delete jpg;

return lRet;
}
到底是怎么回事呀??
xcling00 2004-08-24
  • 打赏
  • 举报
回复
1.确定把所需的lib文件都包含进来了?
2.把工程目录下的obj文件删掉再编译一下。
3.如果还不行,把工程打开时,将窗口自动打开的cpp文件一个一个地关掉,再用ctrl+F12打开cpp文件,编译。或者考到其它目录下试试。
kezhu 2004-08-23
  • 打赏
  • 举报
回复
ding
kezhu 2004-08-17
  • 打赏
  • 举报
回复
options中的很多属性,知道怎么回事的试了一些,但效果都一样。
cnrealboy 2004-08-17
  • 打赏
  • 举报
回复
我也不知道你的系统处在那里,因为有时候就是一些很小很细的地方,所以只能够一步步的尝试,不知道楼主尝试了没有?
kezhu 2004-08-17
  • 打赏
  • 举报
回复
按说系统不应该这样的,是不是工程创建时有问题,导致某些参数设置不对,我的是用dll wizard创建的,这样需要注意哪些?
cnrealboy 2004-08-16
  • 打赏
  • 举报
回复
是让你把GRAPHICS.pas编译,然后它编译出来的obj放入能够被系统找到的路径

或者把它加入工程中,这样系统就应该知道那里可以找到源文件了
kezhu 2004-08-16
  • 打赏
  • 举报
回复
两个bpr当然能比较出不同,但我还是不知道为什么?

手动将一个obj加入工程,难道需要这样吗?cb不能自动做吗?以后遇到其他类似的情况都要手动吗?
cnrealboy 2004-08-16
  • 打赏
  • 举报
回复
搂主,GRAPHICS是bcb的一个类,它确实没有obj,你可以在cb的安装目录下找到它,你手动编译一下或者手工把它加入工程。
qiuafa 2004-08-16
  • 打赏
  • 举报
回复
比较有这个对勾时和没有这个对勾时保存的.bpr,你就可以找到答案。
BL51 BANKED LINKER/LOCATER V6.22 10/13/2017 23:08:20 PAGE 1 BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: D:\51PROGRAM FILES\C51\BIN\BL51.EXE STARTUP.obj, chuankou.obj TO chuankou RAMSIZE (256) MEMORY MODEL: SMALL INPUT MODULES INCLUDED: STARTUP.obj (?C_STARTUP) chuankou.obj (CHUANKOU) LINK MAP OF MODULE: chuankou (?C_STARTUP) TYPE BASE LENGTH RELOCATION SEGMENT NAME ----------------------------------------------------- * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 0003H UNIT ?DT?CHUANKOU IDATA 000BH 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE CODE 0003H 000CH UNIT ?C_C51STARTUP CODE 000FH 000CH UNIT ?PR?SER?CHUANKOU CODE 001BH 0007H UNIT ?CO?CHUANKOU 0022H 0001H *** GAP *** CODE 0023H 0003H ABSOLUTE CODE 0026H 0041H UNIT ?PR?MAIN?CHUANKOU OVERLAY MAP OF MODULE: chuankou (?C_STARTUP) SEGMENT +--> CALLED SEGMENT --------------------- ?C_C51STARTUP +--> ?PR?MAIN?CHUANKOU ?PR?MAIN?CHUANKOU +--> ?CO?CHUANKOU SYMBOL TABLE OF MODULE: chuankou (?C_STARTUP) VALUE TYPE NAME ---------------------------------- ------- MODULE ?C_STARTUP C:0003H SEGMENT ?C_C51STARTUP I:000BH SEGMENT ?STACK C:0000H PUBLIC ?C_STARTUP D:00E0H SYMBOL ACC BL51 BANKED LINKER/LOCATER V6.22 10/13/2017 23:08:20 PAGE 2 D:00F0H SYMBOL B D:0083H SYMBOL DPH D:0082H SYMBOL DPL N:0000H SYMBOL IBPSTACK N:0100H SYMBOL IBPSTACKTOP N:0080H SYMBOL IDATALEN C:0006H SYMBOL IDATALOOP N:0000H SYMBOL PBPSTACK N:0100H SYMBOL PBPSTACKTOP N:0000H SYMBOL PDATALEN N:0000H SYMBOL PDATASTART N:0000H SYMBOL PPAGE N:0000H SYMBOL PPAGEENABLE D:00A0H SYMBOL PPAGE_SFR D:0081H SYMBOL SP C:0003H SYMBOL STARTUP1 N:0000H SYMBOL XBPSTACK N:0000H SYMBOL XBPSTACKTOP N:0000H SYMBOL XDATALEN N:0000H SYMBOL XDATASTART C:0000H LINE# 126 C:0003H LINE# 133 C:0005H LINE# 134 C:0006H LINE# 135 C:0007H LINE# 136 C:0009H LINE# 185 C:000CH LINE# 196 ------- ENDMOD ?C_STARTUP ------- MODULE CHUANKOU C:0000H SYMBOL _ICE_DUMMY_ D:0080H PUBLIC P0 D:0090H PUBLIC P1 D:00B0H PUBLIC P3 B:00A8H.7 PUBLIC EA C:001BH PUBLIC table D:00A8H PUBLIC IE B:00A8H.4 PUBLIC ES D:00B8H PUBLIC IP B:0098H.0 PUBLIC RI D:0008H PUBLIC flag B:0098H.1 PUBLIC TI C:0026H PUBLIC main D:0099H PUBLIC SBUF D:0098H PUBLIC SCON D:0089H PUBLIC TMOD D:0088H PUBLIC TCON C:000FH PUBLIC ser D:008DH PUBLIC TH1 B:0098H.7 PUBLIC SM0 B:0098H.6 PUBLIC SM1 D:008BH PUBLIC TL1 B:0088H.6 PUBLIC TR1 D:0009H PUBLIC a B:0098H.4 PUBLIC REN D:00C8H PUBLIC T2CON D:000AH PUBLIC i BL51 BANKED LINKER/LOCATER V6.22 10/13/2017 23:08:20 PAGE 3 D:00D0H PUBLIC PSW ------- PROC MAIN C:0026H LINE# 6 C:0026H LINE# 7 C:0026H LINE# 8 C:0029H LINE# 9 C:002CH LINE# 10 C:002FH LINE# 11 C:0031H LINE# 12 C:0033H LINE# 13 C:0035H LINE# 14 C:0037H LINE# 15 C:0039H LINE# 16 C:003BH LINE# 17 C:003BH LINE# 18 C:003BH LINE# 19 C:0040H LINE# 20 C:0040H LINE# 21 C:0042H LINE# 22 C:0045H LINE# 23 C:0047H LINE# 24 C:0047H LINE# 25 C:004FH LINE# 26 C:0052H LINE# 27 C:0054H LINE# 28 C:005BH LINE# 29 C:005EH LINE# 30 C:0061H LINE# 31 C:0063H LINE# 32 C:0065H LINE# 33 C:0065H LINE# 34 ------- ENDPROC MAIN ------- PROC SER C:000FH LINE# 36 C:000FH LINE# 38 C:0011H LINE# 39 C:0014H LINE# 40 C:0017H LINE# 41 C:001AH LINE# 42 ------- ENDPROC SER ------- ENDMOD CHUANKOU Program Size: data=12.0 xdata=0 code=102 LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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