OCC配置(windows)问题解决以及遇到的问题

来源:互联网 发布:手机淘宝运费险怎么买 编辑:程序博客网 时间:2024/05/11 17:28
预编译处理:
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