明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5116|回复: 4

缺少mfc70.lib

[复制链接]
发表于 2004-7-24 01:45:00 | 显示全部楼层 |阅读模式
<br>
试图建立arx程序时,在编译后,提示 找不到 mfc70.lib         不是为什么?<br>
我的编译环境是         vc.net         本人初学 ObjectARX                 还望各位指教<br>
<br>
程序是来自于 arxdev.chm <br>
<br>
ttt.def<br>
<br>
LIBRARY "ttt"<br>
<br>
EXPORTS<br>
                         acrxEntryPoint PRIVATE<br>
                         acrxGetApiVersion PRIVATE<br>
<br>
<br>
ttt.cpp<br>
<br>
#include "stdafx.h"<br>
#include "ttt.h"<br>
#include "acutads.h"<br>
#include &lt;rxregsvc.h&gt;<br>
#include &lt;aced.h&gt;<br>
#include &lt;rxmfcapi.h&gt;<br>
<br>
void addCircleThroughMfcCom()<br>
{<br>
                         return;<br>
}<br>
<br>
static void initApp()<br>
{<br>
                         acedRegCmds-&gt;addCommand(<br>
                                                         "ASDK_MFC_COM", <br>
                                                         "AsdkMfcComCircle",<br>
                                                         "MfcComCircle", <br>
                                                         ACRX_CMD_MODAL, <br>
                                                         addCircleThroughMfcCom);<br>
}<br>
<br>
static void unloadApp()<br>
{<br>
                         acedRegCmds-&gt;removeGroup("ASDK_MFC_COM");<br>
}<br>
<br>
<br>
extern "C" AcRx::AppRetCode<br>
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)<br>
{<br>
<br>
                         switch(msg) {<br>
<br>
                         case AcRx::kInitAppMsg:<br>
                                                         // Allow application to be unloaded<br>
                                                         // Without this statement, AutoCAD will<br>
                                                         // not allow the application to be unloaded<br>
                                                         // except on AutoCAD exit.<br>
                                                         //<br>
                                                         acrxUnlockApplication(appId);<br>
<br>
                                                         // Register application as MDI aware.<br>
                                                         // Without this statement, AutoCAD will<br>
                                                         // switch to SDI mode when loading the<br>
                                                         // application.<br>
                                                         //<br>
                                                         acrxRegisterAppMDIAware(appId);<br>
                                                         initApp(); <br>
                                                         acutPrintf("\nExample Application Loaded");<br>
                         break;<br>
<br>
                         case AcRx::kUnloadAppMsg:<br>
                                                  unloadApp(); <br>
                                                         acutPrintf("\nExample Application Unloaded");<br>
                         break;<br>
                         }<br>
                         return AcRx::kRetOK;<br>
}<br>
<br>
发表于 2004-8-11 01:58:00 | 显示全部楼层
你装的vc版本不对不是2002net


我也碰到了你这个问题


我想你也是用的vs。2003吧
发表于 2005-6-13 12:37:00 | 显示全部楼层

[ARX]

本帖最后由 作者 于 2005-6-13 13:29:42 编辑

我这有个东东可能对各位有用,不过我用的也是vs.net2003也缺这个文件,现在正在找 好像上传不了,给大家一个链接地址 中国3S网络 (http://www.863s.com)|利用VC 7.1(VS .NET 2003)和ObjectARX开发AutoCAD应用
添加收藏
设为首页
联系方式
首页 新闻中心 技术专栏 下载中心 3S社区 中国3S网络 → 技术专栏 → 开发专栏
利用VC 7.1(VS .NET 2003)和ObjectARX开发AutoCAD应用
作者:3STech
自从微软的DotNET出来之后,美国的Autodesk公司也曾经观望了一段时间,但最后还是将AutoCAD及其开发工具包按照DotNET的框架标准作了一次重大修整。令人感觉哭笑不得的是,AutoCAD2004及其开发工具包诞生没多久,微软便将DotNET由7.0升到了7.1。这一升级没什么,关键是虽然微软将Visual
Studio .NET从7.0升到7.1没有作太大的改变,但他为了更符合C++标准在编译和连接上发生了一些重大变化。
这些变化给我们ObjectARX开发者带来的麻烦是:不能够使用VC 7.1建立ObjectARX
2004及其以前的应用程序。由于早期ATL和MFC库的版本不符合标准,所以新的编译器与其不兼容,但这些库在建立ObjectARX时是需要的,因为它依赖Autodesk库。另一方面,虽然VC
7.1给我们开发ObjectARX带来了这么大的麻烦,但其性能确实比7.0有较大的提高,而且更符合国际标准,所以,从我本人来讲希望能够通过VC
7.1开发ObjectARX应用。谁让我们是“追随者”呢!J
在ObjectARX Wizards for AutoCAD 2005 Information的安装警告中Autodesk作了如下声明:
- Visual C++ 7.0 (part of Visual Studio .NET 2002) must be used when
building ObjectARX applications for AutoCAD 2004 and 2005.
- ObjectARX applications built with any other compiler version (such as
Visual C++ 7.1, part of Visual Studio .NET 2003) will prompt a warning
when loaded by AutoCAD 2004 or 2005. These applications may also cause
issues at runtime due to the incompatibility of MFC and C-runtime DLLs
between Visual C++ 7.0 and 7.1. If you choose to go ahead with developing
with Visual Studio .NET 2003, we strongly recommend you use Visual Studio
.NET 2002 for building and testing your ObjectARX application.
由此我们可知,在生成AutoCAD 2004和2005的ObjectARX应用时,我们目前仍然必须使用Visual C++
7.0,但我们可以使用其他版本的编译器(如,Visual C++ 7.1)来编写代码。如果你在AutoCAD 2004或2005中加载Visual
C++ 7.1编译生成的应用程序,运行时将可能会产生问题。这个问题实际上是由Visual C++
7.0和7.1之间的MFC和C运行时动态库不兼容引起的。所以,下面的解决方案实际上是使用了两种MFC和C运行时库。
要使用VC 7.1建立AutoCAD 2004/2005应用,首先要具备以下条件:
l 安装了AutoCAD 2004或AutoCAD 2005。
l ObjectARX 2004或2005的开发工具包,需注意的是,要使用向导工具,则需要下载可以在.NET
2003上安装的包。以下地址有下载:
http://adn.autodesk.com/liveupdate/wizards2005.zip
l 安装有Visual Studio .NET 2003(7.1)及Microsoft .NET Framework 1.1。
l 有Visual Studio .NET 2002库及其相关包含文件。
我们具备了以上条件之后,为了更加方便地在所建VC项目配置中引用包含目录和库目录,需要配置如下的关于ObjectARX和VC的系统环境变量,当然你不一定要全配,这要看你所使用的AutoCAD版本、ObjectARX开发包。
你可以按照以下的目录存放ObjectARX开发工具包,并按表中所示命名系统环境变量:
环境变量值描述
ARX1E:\SDK\ARX1ARX 1.0 SDK (R13)
ARX2E:\SDK\ARX202ObjectARX 2.02 SDK (R14)
ARX2000E:\SDK\ARX2000ObjectARX 2000 SDK
ARX2000iE:\SDK\ARX2000iObjectARX 2000i SDK
ARX2002E:\SDK\ARX2002ObjectARX 2002 SDK
ARX2004E:\SDK\ARX2004ObjectARX 2004 SDK
ARX2005E:\SDK\ARX2005ObjectARX 2005 SDK 对于VC开发环境中的系统变量配置如下:
环境变量值描述
MSVC42E:\VCLIBS\VC42Microsoft Visual C++ 4.2
MSVC6E:\VCLIBS\VC6Microsoft Visual C++ 6.0
MSVC7E:\VCLIBS\VC7Microsoft Visual C++ 7.0
MSVC71安装目录Microsoft Visual C++ 7.1 其中配置路径下放置的是包含文件和库文件。
有了环境变量,我们就可以方便地在用ObjectARX的VC项目中,按照下表的要求,配置C/C++的“常规”属性页的“附加包含目录”(对应下面的包含路径),以及链接器的“常规”属性页的“附加库目录”(对应下面的库路径)。对于AutoCAD
2004和2005你可以用向导工具在VC 7.1中创建ObjectARX项目,但对于AutoCAD
2004以下的版本需要以动态链接库的模式来建立ObjectARX应用。
版本包含路径
库路径
VC 4.2$(MSVC42)\Include;$(MSVC42)\MFC\Include
$(MSVC42)\Lib;$(MSVC42)\MFC\Lib
VC 6$(MSVC6)\Include;$(MSVC6)\MFC\Include;$(MSVC6)\ATL\Include
$(MSVC6)\Lib;$(MSVC6)\MFC\Lib;$(MSVC6)\ATL\Lib
VC 7$(MSVC7)\Include;$(MSVC7)\ATLMFC\Include
$(MSVC7)\Lib;$(MSVC7)\ATLMFC\Lib
VC 7.1$(MSVC71)\Include;$(MSVC71)\ATLMFC\Include
$(MSVC71)\Lib;$(MSVC71)\ATLMFC\Lib 包含路径配置示例如下: 库路径配置示例如下: 另外,对于AutoCAD
2000/2002,工程属性中的“调试信息格式”不能使用“用于’编辑并继续’的程序数据库(/ZI)”,除此之外都可以。还需要并设置“启用增量链接”为“否(/INCREMENTAL:NO)”。
如果你使用的是VC6的库,则需要在工程属性àC/C++à代码生成中将“缓冲区安全检查”设置为“否”。另外,如果你使用了_ftol函数,则需要在你的.cpp文件(例如,stdafx.cpp)中作如下的声明:
#if (_MSC_VER >= 1300) && (WINVER < 0x0500)
//VC7 or later, building with pre-VC7 runtime libraries
extern "C" long _ftol( double ); //defined by VC6 C libs
extern "C" long _ftol2( double dblSource ) { return _ftol( dblSource ); }
#endif
如果你还使用了/DELAYLOAD特性,则请不要使用VC6的delayimp.lib文件,你可以使用“$(VcInstallDir)lib\delayimp.lib”。
当然,除了以上问题很可能还会发现新的问题,谁让我们非要“张冠李戴”呢!
现在你不要高兴就完事了,如果用VC 7(VS .NET 2002)的话,按照以上的做法就可以了,但毕竟我们用的是VC 7.1(VS
.NET 2003)。我试过好多次试验都不行,怎么办呢?

我们幸运的是,已经有人为我们解决好了。ManuSoft(好像是一个专门做AutoCAD扩展工具的,有空可以去逛逛)做了一个工具,叫VCBuildBook。它是一个免费的小工具,大家不用担心付费的问题。不过开发者也声明:对于由此工具带来的一切损失具不负责。请点此下载:VCBuildHookSetup.msi,目前版本是1.1.1.0。下载完后运行它安装之就可以了。

安装完毕后,再打开我们创建的VC项目,在项目对应的属性工具栏会出现“UseVC7Paths”属性,当我们开发ObjectARX时,将此属性设为Yes即可。此工具除了具有重定向编译链接之外,还有一项优化编译链接功能(在解决方案属性页中有一个LowPriorityBuild项)。
如果你实在觉得这么做比较麻烦,也可以将VC 7.1与VC 7同时安装。先装VC 7.1再装VC 7,这就看个人喜好了。J 来源:中国3S
阅读:2325 次
日期:2004-10-28
【 双击滚屏 】 【 推荐朋友 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体:大 中 小 】
上一篇:走向世界的中国3S技术——武汉大学测绘学科
下一篇:[转帖]3s在基本农田保护技术及规划方法的革新中的作用 >> 相关文章

[原创]ObjectARX中右键(快捷)菜单的实现方法
[原创]如何在AutoCAD中实现鼠标双击事件
发表评论
发表于 2005-6-20 11:11:00 | 显示全部楼层
问题解决,请上此网址:http://www.ist3d.com,主页上全有
发表于 2011-12-12 15:08:41 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:44 , Processed in 0.163219 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表