vs2008-omniORB+4.1配置

  • 格式:pdf
  • 大小:661.66 KB
  • 文档页数:17
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称 为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户 很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此 之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不 讨论)
运行成功应该显示 Time is1
debug 和 release 的区别
1。Debug 和 Release 有什么区别,为什么要使用 Release 版本! 2。怎么把 Debug 转成 Release
Debug 版本包括调试信息,所以要比 Release 版本大很多(可能大数百 K 至 数 M)。至于是否需要 DLL 支持,主要看你采用的编译选项。如果是基于 ATL 的,则 Debug 和 Release 版本对 DLL 的要求 差不多。如果采用的编译 选项为使用 MFC 动态库,则需要 MFC42D.DLL 等库支持,而 Release 版本 需要 MFC42.DLL 支持。Release Build 不对源代码进行调试,不考虑 MFC 的诊断宏,使用的是 MFC Release 库,编译十对应用程序的速度进行优化,而 Debug Build 则正好相反,它允许对源代码进 行调试,可以定义和使用 MFC 的诊断宏,采用 MFC Debug 库,对速度没有优化。 一、Debug 和 Release 编译方式的本质区别
参考文章 一、下载 OmniORB VS2005 下载 omniORB‐4.1.4‐x86_win32‐vs8.zip,VS2008 下载 omniORB‐4.1.4‐x86_win32‐vs9.zip 下载后解压到任意目录即可,本人解压后为 D:\DevAssist\omniORB-4.1.4 二、配置环境变量 计算机右键单击属性->高级环境系统设置->系统环境变量 Path 后面加上 omniORB 路径\bin\x86_win32
源文件中再新建一个 myserver.cpp,添加以下内容
#include <iostream> #include "time.h" using namespace std; class Time_impl:public virtual POA_Time{ public :
virtual short get_gmt(); }; short Time_impl::get_gmt(){
重起 vs2005,我们就可以使用如上所设的宏:$(ICONVDIR)、$(LIBTNCDIR)、$(LIBXML2DIR)... (二) 在 vs2005 添加用户自定义宏(User Macros),步骤如下: 1. View->Other Windows->Property Manager (中文版在“视图”菜单下,名为"属性管理器")
最后的目录结构应该像这样:
四、修改工程参数 需要修改三个工程参数 在工程名 FirstOmniORB_Server 上右击-> Properties 打开属性页 1.选择 Configuration Properties -> C/C++ -> Preprocessor,修改右边的 PreprocessorDefinitions,添加如下项:
}catch(const CORBA::Exception&){ cerr<<"exception"<<endl; return 1;
} return 0; }
再新建一个 Win32 Console Application 空工程,名为 FirstOmniORB_Client,作为客户端应用程 序,同样添加 time.h 和 timeSK.cpp,并在头文件中添加 myclient.cpp,内容如下
cerr<<"Nil Time Reference"<<endl; throw 0; } Time_var tm = Time::_narrow(obj); if(CORBA::is_nil(tm)){ cerr<<"Nil Time Reference"<<endl; throw 0; } cout<<"Time is"<<tm‐>get_gmt()<<endl; }catch(const CORBA::Exception&){ cerr<<"Exception"<<endl; return 1; } return 0; }
三、配置 VS 目录 打开 VS,选择 Tools 工具->Options 选项,在弹出窗口中选择 Project and Solutions -> VC++ Directories,要设定三个文件夹目录:1.在右上角下拉菜单中选择 Executable files,在下面新 加一个目录 OmniORB 路径\bin\x86_win32(注意不要光写到 bin 把后面的 x86_win32 掉了)
#include <iostream> #include "time.h" using namespace std; int main(int argc,char* argv[]){
try{
if(rgc!=2){ throw 0;
} CORBA::ORB_var orb = CORBA::ORB_init(argc,argv); CORBA::Object_var obj = orb‐>string_to_object(argv[1]); if(CORBA::is_nil(obj)){
五、编译运行
编译两个工程将产生两个 exe 文件
在 VS 里显示的命令行其中的内容貌似不好复制,可以在两工程所在的 Solution 路径下的 debug 或 release 文件夹中找到两个编译完成的 exe 文件。运行 cmd 并到两个文件所在路径下,先运行 FirstOmniORB_Server.exe,会产生 IOR,再开一个 cmd,将"IOR:....."作为参数运行 FirstOmniORB_Client.exe
Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对 assert 函数) /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过 程中如果修改了源代码不需重新编译 /GZ 可以帮助捕获内存错误 /Gm 打开最小化重链接开关,减少链接时间
return 1; } int main(int argc, char* argv[]){
try{ CORBA::ORB_var orb = CORBA::ORB_init(argc,argv); CORBA::Object_var obj =orb‐>resolve_initial_references("RootPOA"); PortableServer::POA_var poa =PortableServer::POA::_narrow(obj); PortableServer::POAManager_var mgr =poa‐>the_POAManager(); mgr‐>activate(); Time_impl time_servant; Time_var tm = time_servant._this(); CORBA::String_var str = orb‐>object_to_string(tm); cout<<str<<endl; orb‐>run();
2. 在 Property Manage 窗口选中你想要的配置如“Debug|Win32”,或者,“myTest”表示全选, 然后右键选“Add New Property Sheet...”
3. 新建一个 Property Sheet(.vsprops),叫 myProperty
4. 双击 myProperty,选择 User Macros 5. 点击 Add Macro 就可以添加用户自定义宏
__WIN32__;__x86__;_WIN32_WINNT=0x0400;__NT__;__OSVERSION__=6
__OSVERSION__的值貌似并不重要,本人环境为 Win7,所以写了 6
OmniORB 官方文档说 XP 要写 4,虽然实际上 XP 的内核版本号为 5,不知道为何
2. C/C++ ‐> Code Generation 右边的 Runtime Library 选择 Multi‐threaded Dll(/MD)
2.在右上角下拉菜单中选择 Include files,在下面新加一个目录 OmniORB 路径\include
3.在下拉菜单中选择 Library files,添加目录 OmniORB 路径\lib\x86_win32。
如何使用用户自定义宏(User Macros) 在 vs2005 的 Project->Property 设置里经常会看到类似$(IntDir)、$(OutDir)、$(ProjectName) 的 预定义宏。以 vc2005 为例,有时候我们在引用别的库时需要在项目设置里添加额外的头文件和库 文件路径,我们不想每个路径都用一大堆的“..\.. \include”或绝对路径表示,因为不但繁琐而 且万一路径改变每处都要修改,不方便维护,我们希望能自定义类是$(myDir) = c:\myPrj\include 的宏。 类似$(myDir)的宏叫用户自定义宏(User Macros),vs2005 使用用户自定义宏有两种方法: (一) 在系统环境变量里面添加,如下图: