读书人

编译通过后[linkker error]error:un

发布时间: 2012-02-17 17:50:41 作者: rapoo

编译通过后,[linkker error]error:unresolved external'xxxxxx.OBJ
C++ builder 2006 编译通过后,进行linker时报出错,网上查了一下只有一个模糊的方法是增加.lib到工程,但我把所需要的lib已经加入。是漏掉了lib?

.h头文件源文件

C/C++ code
//---------------------------------------#ifndef TJzDataPkgH#define TJzDataPkgH//---------------------------------------#include <oxmldom.hpp>#include <msxmldom.hpp>#include <XMLDoc.hpp>#include <xmldom.hpp>#include <XMLIntf.hpp>//---------------------------------------int __fastcall StringLastIndexOf(String Source, String SubString);//---------------------------------------class TJzSlave : public TObject {private:  friend class TJzDataPkg;  TJzDataPkg *FOwner;  String FName;  TStream *FContent;  int FOffset;  int FLength;  TStream * const __fastcall GetContent();public:  __fastcall TJzSlave(TJzDataPkg *AOwner, String AName, TStream *AContent);  __fastcall ~TJzSlave();  __property String Name = { read=FName };  __property int Length = { read=FLength };  __property TStream *Content = { read=GetContent };};//---------------------------------------enum TDataPkgType { dptRequest, dptResponse };enum TDataPkgState { dpsEditing, dpsBuilded };//---------------------------------------class TJzDataPkg : public Classes::TPersistent {private:  TDataPkgType FType;  TDataPkgState FState;  int    __fastcall GetId(void);  void   __fastcall SetId(int AReqId);  String __fastcall GetCmd(void);  void   __fastcall SetCmd(String ReqCmd);  String __fastcall GetClientIp(void);     // 1.2  void   __fastcall SetClientIp(String AClientIp);     // 1.2  int    __fastcall GetSlaveCount(void);  int    __fastcall GetResultCode(void);  String __fastcall GetResultMsg(void);  _di_IXMLDocument FHeadXml;  _di_IXMLNode FRootNode;  _di_IXMLNode FCmdNode;  _di_IXMLNode FResultNode;  _di_IXMLNode FDataNode;  _di_IXMLNode FSlavesNode;  TList *FSlaveList;public:  //__fastcall TJzDataPkg(const char *Buffer, const int Length);  __fastcall TJzDataPkg(String AHead);  __fastcall TJzDataPkg();  __fastcall ~TJzDataPkg();  //void __fastcall LoadFromBuffer(const char *Buffer, const int Length);  void __fastcall CreateHead(String AHead);  void __fastcall SetResult(int ACode, String AMsg);  String __fastcall GetData(String ADataName);  void __fastcall PutData(String ADataName, String AValue);  void __fastcall PutSlave(String ASlaveName, TStream *AContent);  bool __fastcall HasSlave(String ASlaveName);  int __fastcall GetSlaveLength(int AIndex);  int __fastcall GetSlaveLength(String ASlaveName);  TJzSlave *__fastcall GetSlave(int AIndex);  TJzSlave *__fastcall GetSlave(String ASlaveName);  String __fastcall GetXml(void);  void __fastcall SaveSlaveContent2Stream(int AIndex, TStream *AStream);  void __fastcall SaveSlaveContent2Stream(String ASlaveName, TStream *AStream);  void __fastcall SaveToStream(const TStream *AStream);__published:  __property int Id = { read=GetId, write=SetId };  __property String Cmd = { read=GetCmd, write=SetCmd };  __property String ClientIp = { read=GetClientIp, write=SetClientIp }; // 1.2  __property _di_IXMLNode DataNode = { read=FDataNode };  __property int SlaveCount = { read=GetSlaveCount };  __property int ResultCode = { read=GetResultCode };  __property String ResultMsg = { read=GetResultMsg };};//---------------------------------------extern PACKAGE int BLOCK_BUFFER_LENGTH;#endif


[解决办法]
检查路径的设置看看呢
[解决办法]
这个错误不止是缺少lib的提示,通常只是在编译器找不到某个对象或某个函数或某个类的实现部分时,就会提示这个信息。但是那个实现部分,有可能是在某个lib中,也有可能是某个.cpp或.pas,或某个.obj



所以,要看具体的提示。
[解决办法]
感觉问题应该出在你的工程放在了有中文的路径里:)
把工程换个路径试试?
[解决办法]
检查和xxxx.obj同名的.cpp文件。
[解决办法]

探讨

这是一个问题,但我的项目是纯E文,而且没有+ - 这些特别的符号!

引用:

感觉问题应该出在你的工程放在了有中文的路径里:)
把工程换个路径试试?

[解决办法]
提醒一下:
1、目是否多工程分的?如果是,查不同的工程,其C++是否兼容。特查underscores,也就是是否在符名前加下。如果不兼容,接出。
2、查路,注意接正的文件:1)debug版本的及Release的要注意分,不要搞路,接的OBJ生很多。2)注意不要接以前的 OBJ ,也就是以前的 OBJ 全部除,所有 OBJ 全部重新生成。
3、
TJzDataPkg.obj 被其他 OBJ 所引用, 主描述的象看,部分 OBJ 是其他工程的,TJzDataPkg.cpp被重新後,那部分 OBJ 有被重新,所以我疑主目的工程依系有,查各工程的“相互依系”,建立正的序。

读书人网 >C++ Builder

热点推荐