OCC配置(windows)問題解決以及遇到的問題

預編譯處理:
WINDOWS
CSFDB
_DEBUG
WNT
WIN32
NO_COMMONSAMPLE_EXPORTS
NO_IESAMPLE_EXPORTS
QT_DLL
QT_GUI_LIB
QT_CORE_LIB
QT_THREAD_SUPPORT 
附加依賴項:
qtmaind.lib
TKernel.lib
PTKernel.lib
TKMath.lib
TKService.lib
TKV3d.lib
TKV2d.lib
TKBRep.lib
TKIGES.lib
TKSTL.lib
TKVRML.lib
TKSTEP.lib
TKSTEPAttr.lib
TKSTEP209.lib
TKSTEPBase.lib
TKShapeSchema.lib
TKGeomBase.lib
TKGeomAlgo.lib
TKG3d.lib
TKG2d.lib
TKXSBase.lib
TKPShape.lib
TKShHealing.lib
TKHLR.lib
TKTopAlgo.lib
TKMesh.lib
TKPrim.lib
TKCDF.lib
TKBool.lib
TKBO.lib
TKFillet.lib
TKOffset.lib
QtCore4.lib
QtGui4.lib
QtGuid4.lib
QtCored4.lib
 
1. LINK : fatal error LNK1104: cannot open file "TKBRep.lib"
找到這個文件(找不到就不要編譯了)
把這個文件拷貝到VC的庫文件夾下面(C:/Program Files/Microsoft Visual Studio/VC98/LIB),或者在VC的菜單選擇Tools,再選擇“directories”,改"show directories for" “library files” 
在下面添加你的庫文件所在位置。

 

 

2. LINK : fatal error LNK1181: 無法打開輸入文件“mfc42d.lib

執行 link.exe 時出錯.
Calculator.exe - 1 error(s), 0 warning(s)
錯誤主要出現在網絡流傳的VC++6.0版本中(ProductID:50021-111-1111111-1745)當調試鏈接MFC嚮導程序的時候,出現此錯誤。發生這一錯誤的原因主要是設置問題,但僅通過修改設置缺無法解決。並且通過重新安裝也無法解決。
正確的解決方法是將安裝文件中的
C:/VC++.6.0.with.SP6/VC6CN/VC98/MFC/LIB
C:/VC++.6.0.with.SP6/VC6EN/VC98/MFC/LIB
目錄下的所有文件複製,粘貼到 C:/Program Files/Microsoft Visual Studio/VC98/MFC/Lib
C:/Program Files/Microsoft Visual Studio/VC98/Lib 即可。
產生此錯誤的主要原因是VC編譯程序在Microsoft Visual Studio/VC98/Lib目錄下鏈接而非Microsoft Visual Studio/VC98/MFC/Lib目錄,故即使Microsoft Visual Studio/VC98/MFC/Lib下有mfc42d.lib,也無法鏈接

 

 

vs解決方案release版本調成debug

如果給你一個vs的解決方案,默認的是release版的,讓你弄出一個debug版本出來方便調試,你會發現,一個大的工程,絕對不會是講release改爲debug那麼簡單。

首先,改爲debug後,要保證一些基本的庫跟release版本是一致的,這樣才能夠保證編譯時能夠找到庫文件,dll或者lib,有時候路徑設置的不對,甚至連h或者cpp文件也找不到。

然後,是字符集和MFC使用的設置,一般都是多字符集,MFCrelease版本保持一致。當然有時候編譯不通過的時候可以都試一下。

另外還有幾個特別容易出錯的地方,代碼生成那裏的基本運行時檢查和運行時庫,設置的不對也會導致大量的出錯信息。

注意一下文件的輸入輸出目錄,各個文件之間的調用關係。

下面說一下我今天遇到的錯誤還有解決方法吧。

error LNK2005: _calloc 已經在 libcmtd.lib(dbgheap.obj) 中定義 LIBCMT.lib
fatal error LNK1169:
找到一個或多個多重定義的符號

這種錯誤要在鏈接器—輸入—忽略特定庫中輸入LIBCMT.lib

error LNK2005: _DllMain@12 已經在 CyberGina.obj 中定義 mfcs80d.lib
fatal error LNK1169:
找到一個或多個多重定義的符號

我在預處理器—預處理定義—刪除USEDLL解決了問題

error LNK2019: 無法解析的外部符號 _CIP_STREAM_OP,該符號在函數 “public: long………………中被引用
這種錯誤一般是庫文件路徑不對
鏈接器—輸入—附加依賴庫 保持跟release一致

error C2491: XXX: 不允許 dllimport 函數的定義
c/c++
預處理器 預處理定義 添加APICTRL_EXPORTS,網上多半是說加入DLLEXPORT,我試過了,對我來說不能解決。呵呵。

最後,如果提示找不到什麼libdll一定要仔細檢查設置的附加庫啊,包含目錄啊,依賴項,要保證路徑正確,並且文件存在。

 

./debug/moc_MDIWindow.cpp(54) : error C2491: MDIWindow::staticMetaObject: 不允許dllimport 靜態數據成員的定義

解決的辦法在Project->Property->C/C++->預處理器加上NO_IESAMPLE_EXPORTS,NO_COMMONSAMPLE_EXPORTS(這兩個宏都在文件中有定義,而且涉及到#define COMMONSAMPLE_EXPORT __declspec( dllexport )#define IESAMPLE_EXPORT __declspec( dllexport ))

 

_Z10qAllocMoreii程序無法定位於QtCore4d.dll

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章