首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

编译通过后,[linkker error]error:unresolved external'xxxxxx.OBJ解决方案

2012-02-17 
编译通过后,[linkker error]error:unresolved externalxxxxxx.OBJC++ builder 2006 编译通过后,进行linke

编译通过后,[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 並沒有被重新編譯,所以我懷疑樓主項目的工程依賴關系有問題,應該檢查各工程的“相互依賴關系”,建立正確的編譯順序。

热点排行