本站首页    管理页面    写新日志    退出


一步步实现OpenVXI (二)
zhu_ruixian 发表于 2006/7/23 14:18:43

四.编译OpenVXI 3.编译value 在Visual Stdio.NET中的解决方案管理器中,右击myOpenVXI,然后选”添加”->新建项目。在对话框中选”Visual C++项目”->Win32->Win32项目,名称:value 位置:E:\work\myOpenVXI(这个应该是默认的),点击“确定”。右键点击swichar->属性->配置属性->常规->输出目录,把输出目录改为”..\bin”,点“确定“。然后把src\value下面的cpp文件和头文件拷到E:\work\myOpenVXI\value目录,然后加入工程。右键点击value工程,然后点生成。如果头文件找不到,修改头文件的路径如下: #include "..\include\*.h" 如果有WIN32的条件编译,加上 #ifndef WIN32 #define WIN32 #endif 如果上面设置好了之后,编译仍然有问题,打开value工程,Value工程共有4个cpp文件,其中有两个文件为ValueNoSTL.cpp和ValueSTL.cpp。二者只能选其一。STL是标准模板库的缩写。我们选择ValueSTL.cpp,把ValueNoSTL.cpp从工程移除。然后再编译。我们就可以在E:\work\myOpenVXI\bin目录下找到生成的Value.dll和 value.lib了。 打开类视图,你可以发现value实际上是一个VXIValue类,然后派生了13个子类。Value的功能是,定义了OpenVXI自己的数据类型, OpenVXI里面找不到基本的数据类型,全部OpenVX另外定义的。这样,value也编译好了。很简单! 4.编译trd    在Visual Stdio.NET中的解决方案管理器中,右击myOpenVXI,然后选”添加”->新建项目。在对话框中选”Visual C++项目”->Win32->Win32项目,名称:trd 位置:E:\work\myOpenVXI(这个应该是默认的),点击“确定”。右键点击trd->属性->配置属性->常规->输出目录,把输出目录改为”..\bin”,点“确定“。然后把src\trd下面的cpp文件和头文件拷到E:\work\myOpenVXI\value目录,然后加入工程。右键点击trd工程,然后点生成。    有错误,和上面的处理方法一样,先修改头文件。然后是添加宏定义。处理完之后,编译会有一个,前面没有过的错误: e:\work\myOpenVXI\trd\trdUtil\SBtrdMutex.cpp(346): error C2065: “COMPANY_DOMAIN” : 未声明的标识符 有必要解释一下,COMPANY_DOMAIN是OpenVXI的设计者留下让我们自己定义的。你可以定义为:#define  COMPANY_DOMAIN  L"公司的名称" 我把它定义为如下: L“”是一个宏。 #define  COMPANY_DOMAIN  L"my" 然后,编译。仍然会报错。我们打开SBtrdPthreads.cpp文件,会在注释里面找到这样的内容: /*****************************************************************************  * SBtrd API implementation * This provides the Linux implementation of the VXItrd API for basic  * thread operations and locks.*/ 内容这个文件是OpenVXI的设计者为Linux写的,我们不需要。从工程移除即可。然后再编译,应该就能生成dll文件和相应的lib文件。这样trd的工作也完成了。打开类视图,你可以一目了然的浏览所有的类,仅从名称上就可以知道,这个模块是操作线程的。这两个工程没有用到*.def文件,这是因为他们用的是另外的方式导出函数,一种就是声明为:extern "C" __declspec(dllexport)  另一种就是声明为static的类型。也不难对吧!好继续。 5. 编译log和 cache 步骤和上面的一模一样。我就不罗嗦了。值得一提得是,SBlog.cpp中定义__THREADED宏,和在SBlogMapper.cpp中定义HAVE_XERCES宏。不定义,有可能编译通过,但是后面使用的时候会有问题。 #ifndef HAVE_XERCES #define HAVE_XERCES #endif 定义完HAVE_XERCES后编译,一个错误就是: e:\work\myOpenVXI\log\SBlogMapper.cpp(52): fatal error C1083: 无法打开包含文件:“util/PlatformUtils.hpp”: No such file or directory 这就要用到了xerces,把xerces-c_2_6_0\include目录下的文件夹拷到..\Microsoft Visual Studio .NET\include文件夹,然后把 #include <util/PlatformUtils.hpp>改成如下,其余类似。 #include <xercesc/util/PlatformUtils.hpp>  还有一个就是,链接的时候出问题,右键点log工程->属性->链接器->输入->附加依赖项,输入“..\bin\trd.lib ..\bin\value.lib” xerces-c_2_6_0\lib目录下的文件也拷到trd.lib所在的目录下。附加依赖项中再输入: ..\bin\xerces-c_2D.lib ..\bin\xerces-depdom_2.lib ..\bin\xerces-depdom_2D.lib ..\bin\xerces-c_2.lib 然后再次生成log工程。如果正常,也能在bin下看到log.dll和log.lib了。Log模块也做完了。Cache按上面的步骤来就是了。没什么好说的。

阅读全文(3636) | 回复(0) | 编辑 | 精华

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

  公告
欢迎大家留言!既然来了,多少说两句!呵呵!

 


  我的分类(专题)
  最近日志

  最新评论

  留言板

  链接


  Blog信息
blog名称:
日志总数:33
评论数量:61
留言数量:-8
访问次数:235367
建立时间:2006年4月27日



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144755436 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号