﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ITvsET-文章分类-Opencascade</title><link>http://www.cppblog.com/JackChen/category/16661.html</link><description>smiley</description><language>zh-cn</language><lastBuildDate>Thu, 21 Apr 2011 04:13:51 GMT</lastBuildDate><pubDate>Thu, 21 Apr 2011 04:13:51 GMT</pubDate><ttl>60</ttl><item><title>OCC配置（windows）问题解决以及遇到的问题</title><link>http://www.cppblog.com/JackChen/articles/144625.html</link><dc:creator>天一程</dc:creator><author>天一程</author><pubDate>Wed, 20 Apr 2011 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/JackChen/articles/144625.html</guid><wfw:comment>http://www.cppblog.com/JackChen/comments/144625.html</wfw:comment><comments>http://www.cppblog.com/JackChen/articles/144625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/JackChen/comments/commentRss/144625.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/JackChen/services/trackbacks/144625.html</trackback:ping><description><![CDATA[<pre>预编译处理：</pre>
<pre><span>WINDOWS</span></pre>
<pre><span>CSFDB</span></pre>
<pre><span>_DEBUG</span></pre>
<pre><span>WNT</span></pre>
<pre><span>WIN32</span></pre>
<pre><span>NO_COMMONSAMPLE_EXPORTS</span></pre>
<pre><span>NO_IESAMPLE_EXPORTS</span></pre>
<pre><span>QT_DLL</span></pre>
<pre><span>QT_GUI_LIB</span></pre>
<pre><span>QT_CORE_LIB</span></pre>
<pre><span>QT_THREAD_SUPPORT </span></pre>
<pre></pre>
<pre>附加依赖项：</pre>
<pre><a name=OLE_LINK1><span>qtmaind.lib</span></a></pre>
<pre><span>TKernel.lib</span></pre>
<pre><span>PTKernel.lib</span></pre>
<pre><span>TKMath.lib</span></pre>
<pre><span>TKService.lib</span></pre>
<pre><span>TKV3d.lib</span></pre>
<pre><span>TKV2d.lib</span></pre>
<pre><span>TKBRep.lib</span></pre>
<pre><span>TKIGES.lib</span></pre>
<pre><span>TKSTL.lib</span></pre>
<pre><span>TKVRML.lib</span></pre>
<pre><span>TKSTEP.lib</span></pre>
<pre><span>TKSTEPAttr.lib</span></pre>
<pre><span>TKSTEP209.lib</span></pre>
<pre><span>TKSTEPBase.lib</span></pre>
<pre><span>TKShapeSchema.lib</span></pre>
<pre><span>TKGeomBase.lib</span></pre>
<pre><span>TKGeomAlgo.lib</span></pre>
<pre><span>TKG3d.lib</span></pre>
<pre><span>TKG2d.lib</span></pre>
<pre><span>TKXSBase.lib</span></pre>
<pre><span>TKPShape.lib</span></pre>
<pre><span>TKShHealing.lib</span></pre>
<pre><span>TKHLR.lib</span></pre>
<pre><span>TKTopAlgo.lib</span></pre>
<pre><span>TKMesh.lib</span></pre>
<pre><span>TKPrim.lib</span></pre>
<pre><span>TKCDF.lib</span></pre>
<pre><span>TKBool.lib</span></pre>
<pre><span>TKBO.lib</span></pre>
<pre><span>TKFillet.lib</span></pre>
<pre><span>TKOffset.lib</span></pre>
<pre><span>QtCore4.lib</span></pre>
<pre><span>QtGui4.lib</span></pre>
<pre><span>QtGuid4.lib</span></pre>
<pre><span>QtCored4.lib</span></pre>
<pre></pre>
<pre>&nbsp;</pre>
<pre><span>1.</span><span> LINK : fatal error LNK1104: cannot open file "TKBRep.lib"</span></pre>
<pre><span>找到这个文件（找不到就不要编译了）</span></pre>
<pre><span>把这个文件拷贝到</span><span>VC</span><span>的库文件夹下面（</span><span>C:\Program Files\Microsoft Visual Studio\VC98\LIB</span><span>），或者在</span><span>VC</span><span>的菜单选择</span><span>Tools</span><span>，再选择</span><span>&#8220;directories&#8221;</span><span>，改</span><span>"show directories for" </span><span>为</span><span>&#8220;library files&#8221; </span></pre>
<pre><span>在下面添加你的库文件所在位置。</span></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>2.</span><span> LINK : fatal error LNK1181: </span><span>无法打开输入文件&#8220;<span>mfc42d.lib</span>&#8221;</span></p>
<p><span>执行</span><span> link.exe </span><span>时出错</span><span>. <br>Calculator.exe - 1 error(s), 0 warning(s) </span><span>错误主要出现在网络流传的</span><span>VC++6.0</span><span>版本中（</span><span>ProductID:50021-111-1111111-1745</span><span>）当调试链接</span><span>MFC</span><span>向导程序的时候，出现此错误。发生这一错误的原因主要是设置问题，但仅通过修改设置缺无法解决。并且通过重新安装也无法解决。</span><span> <br></span><span>正确的解决方法是将安装文件中的</span><span> <br>C:\VC++.6.0.with.SP6\VC6CN\VC98\MFC\LIB </span><span>或</span><span> C:\VC++.6.0.with.SP6\VC6EN\VC98\MFC\LIB <br></span><span>目录下的所有文件复制，粘贴到</span><span> C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib <br></span><span>※</span><span>和</span><span> C:\Program Files\Microsoft Visual Studio\VC98\Lib </span><span>即可。</span><span> <br></span><span>产生此错误的主要原因是</span><span>VC</span><span>编译程序在</span><span>Microsoft Visual Studio\VC98\Lib</span><span>目录下链接而非</span><span>Microsoft Visual Studio\VC98\MFC\Lib</span><span>目录，故即使</span><span>Microsoft Visual Studio\VC98\MFC\Lib</span><span>下有</span><span>mfc42d.lib</span><span>，也无法链接</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span>vs</span>解决方案<span>release</span>版本调成<span>debug</span></h2>
<p>如果给你一个<span>vs</span>的解决方案，默认的是<span>release</span>版的，让你弄出一个<span>debug</span>版本出来方便调试，你会发现，一个大的工程，绝对不会是讲<span>release</span>改为<span>debug</span>那么简单。</p>
<p>首先，改为<span>debug</span>后，要保证一些基本的库跟<span>release</span>版本是一致的，这样才能够保证编译时能够找到库文件，<span>dll</span>或者<span>lib</span>，有时候路径设置的不对，甚至连<span>h</span>或者<span>cpp</span>文件也找不到。</p>
<p>然后，是字符集和<span>MFC</span>使用的设置，一般都是多字符集，<span>MFC</span>跟<span>release</span>版本保持一致。当然有时候编译不通过的时候可以都试一下。</p>
<p>另外还有几个特别容易出错的地方，代码生成那里的基本运行时检查和运行时库，设置的不对也会导致大量的出错信息。</p>
<p>注意一下文件的输入输出目录，各个文件之间的调用关系。</p>
<p>下面说一下我今天遇到的错误还有解决方法吧。</p>
<p><span>error LNK2005: _calloc </span>已经在<span> libcmtd.lib(dbgheap.obj) </span>中定义<span> LIBCMT.lib<br>fatal error LNK1169: </span>找到一个或多个多重定义的符号<span><br></span>这种错误要在链接器—输入—忽略特定库中输入<span>LIBCMT.lib</span>。</p>
<p><span>error LNK2005: _DllMain@12 </span>已经在<span> CyberGina.obj </span>中定义<span> mfcs80d.lib<br>fatal error LNK1169: </span>找到一个或多个多重定义的符号<span><br></span>我在预处理器—预处理定义—删除<span>USEDLL</span>解决了问题</p>
<p><span>error LNK2019: </span>无法解析的外部符号<span> _CIP_STREAM_OP</span>，该符号在函数 &#8220;<span>public: long</span>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;中被引用<span><br></span>这种错误一般是库文件路径不对<span><br></span>链接器—输入—附加依赖库 保持跟<span>release</span>一致</p>
<p><span>error C2491: XXX: </span>不允许<span> dllimport </span>函数的定义<span><br>c/c++ </span>预处理器 预处理定义 添加<span>APICTRL_EXPORTS</span>，网上多半是说加入<span>DLLEXPORT,</span>我试过了，对我来说不能解决。呵呵。</p>
<p>最后，如果提示找不到什么<span>lib</span>，<span>dll</span>一定要仔细检查设置的附加库啊，包含目录啊，依赖项，要保证路径正确，并且文件存在。</p>
<p>&nbsp;</p>
<p><span>.\debug\moc_MDIWindow.cpp(54) : error C2491: </span><span>&#8220;<span>MDIWindow::staticMetaObject</span>&#8221;<span>: </span>不允许<span>dllimport </span>静态数据成员的定义</span></p>
<p><span>解决的办法在<span>Project-&gt;Property-&gt;C/C++-&gt;</span>预处理器加上<span>NO_IESAMPLE_EXPORTS,NO_COMMONSAMPLE_EXPORTS(</span>这两个宏都在文件中有定义，而且涉及到</span><span>#define COMMONSAMPLE_EXPORT __declspec( dllexport )</span><span>，<span>#define IESAMPLE_EXPORT __declspec( dllexport )</span></span><span>)</span></p>
<p>&nbsp;</p>
<p><span>_Z10qAllocMoreii</span><span>程序无法定位于<span>QtCore4d.dll</span></span></p>
<img src ="http://www.cppblog.com/JackChen/aggbug/144625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/JackChen/" target="_blank">天一程</a> 2011-04-20 09:40 <a href="http://www.cppblog.com/JackChen/articles/144625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>