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

    技术2022-05-19  20

    预编译处理: 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.libfatal error LNK1169: 找到一个或多个多重定义的符号这种错误要在链接器—输入—忽略特定库中输入LIBCMT.lib

    error LNK2005: _DllMain@12 已经在 CyberGina.obj 中定义 mfcs80d.libfatal 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


    最新回复(0)