当前位置:  操作系统/服务器>windows
本页文章导读:
    ▪Windows停的Objective-C集成开发环境(IDE)的搭建 (二)        Windows下的Objective-C集成开发环境(IDE)的搭建 (二) Windows下的Objective-C集成开发环境(IDE)的搭建 (二)              继上一步Windows下的Objective-C集成开发环境(IDE)的搭建 (一)配置运行命令.........
    ▪ Windows停架设自己的DNS服务器 NTBind        Windows下架设自己的DNS服务器 NTBind Windows下架设自己的DNS服务器发表于 2007-09-17 由 charlee 相信有很多人都想架设自己的DNS服务器。我们知道世界上最好用的DNS服务器软件就是BIND;但是我辈.........
    ▪ 怎么更改Windows Server 2003企业版IE的安全级别       如何更改Windows Server 2003企业版IE的安全级别       Windows Servers 2003企业版的IE的安全级别被限制为高级,一般网站无法访问,如何在不添加信任站点的情况下更改安全级别呢?       由于Wind.........

[1]Windows停的Objective-C集成开发环境(IDE)的搭建 (二)
    来源: 互联网  发布时间: 2014-02-18
Windows下的Objective-C集成开发环境(IDE)的搭建 (二)


Windows下的Objective-C集成开发环境(IDE)的搭建 (二)

 

           继上一步Windows下的Objective-C集成开发环境(IDE)的搭建 (一)配置运行命令行程序后,今天来讲解一下如何使用

codeblocks配置开发使用cocoa framework开发GUI程序。

 

#include "AppController.h"
#include <AppKit/AppKit.h>

int main(int argc, const char *argv[])
{
   NSAutoreleasePool *pool;
   AppController *delegate;

   pool = [[NSAutoreleasePool alloc] init];
   delegate = [[AppController alloc] init];

   [NSApplication sharedApplication];
   [NSApp setDelegate: delegate];

   RELEASE(pool);
   return NSApplicationMain (argc, argv);
}
 

 

我们使用一个helloworld开始旅程。

 

 

    这个helloworld程序共有五个文件:main.m、AppController.h、AppController.m、helloworldInfo.plist和GNUmakefile。图形界面的设计全部在代码中。

 

 

  • 第一步:使用codeblocks新建一个c的console程序。这里命名该工程名为gui,如图所示:
  • 添加一个main.c文件,将下面的代码拷贝并覆盖main.c中内容#include "AppController.h"
  • #include <AppKit/AppKit.h>
    
    int main(int argc, const char *argv[])
    {
       NSAutoreleasePool *pool;
       AppController *delegate;
    
       pool = [[NSAutoreleasePool alloc] init];
       delegate = [[AppController alloc] init];
    
       [NSApplication sharedApplication];
       [NSApp setDelegate: delegate];
    
       RELEASE(pool);
       return NSApplicationMain (argc, argv);
    }
  •  

  • 添加一个AppController.h 头文件,内容如下:
    #ifndef _AppController_H_
    
    #define _AppController_H_
    
    #include <Foundation/NSObject.h>
    
    @class NSWindow;
    @class NSTextField;
    @class NSNotification;
    
    @interface AppController : NSObject
    {
       NSWindow *window;
       NSTextField *label;
    }
    
    - (void)applicationWillFinishLaunching:(NSNotification *) not;
    - (void)applicationDidFinishLaunching:(NSNotification *) not;
    
    @end
    
    #endif /* _AppController_H_ */		
  • 实现一个AppController.h的AppController.m文件#include "AppController.h"
    #include <AppKit/AppKit.h>
    
    @implementation AppController
    - (void) applicationWillFinishLaunching: (NSNotification *) not
    {
       /* Create Menu */
       NSMenu *menu;
       NSMenu *info;
    
       menu = [NSMenu new];
       [menu addItemWithTitle: @"Info"
                       action: NULL
                keyEquivalent: @""];
       [menu addItemWithTitle: @"Hide"
                       action: @selector(hide:)
                keyEquivalent: @"h"];
       [menu addItemWithTitle: @"Quit"
                       action: @selector(terminate:)
                keyEquivalent: @"q"];
    
       info = [NSMenu new];
       [info addItemWithTitle: @"Info Panel..."
                       action: @selector(orderFrontStandardInfoPanel:)
                keyEquivalent: @""];
       [info addItemWithTitle: @"Preferences"
                       action: NULL 
                keyEquivalent: @""];
       [info addItemWithTitle: @"Help"
                       action: @selector (orderFrontHelpPanel:)
                keyEquivalent: @"?"];
    
       [menu setSubmenu: info 
                forItem: [menu itemWithTitle:@"Info"]];
       RELEASE(info);
    
       [NSApp setMainMenu:menu];
       RELEASE(menu);
    
       /* Create Window */
       window = [[NSWindow alloc] initWithContentRect: NSMakeRect(300, 300, 200, 100)
                                  styleMask: (NSTitledWindowMask |
                                              NSMiniaturizableWindowMask |
                                              NSResizableWindowMask)
                                   backing: NSBackingStoreBuffered
                                   defer: YES];
       [window setTitle: @"Hello World"];
    
       /* Create Label */
       label = [[NSTextField alloc] initWithFrame: NSMakeRect(30, 30, 80, 30)];
       [label setSelectable: NO];
       [label setBezeled: NO];
       [label setDrawsBackground: NO];
       [label setStringValue: @"Hello World"];
    
       [[window contentView] addSubview: label];
       RELEASE(label);
    }
    
    - (void) applicationDidFinishLaunching: (NSNotification *) not
    {
       [window makeKeyAndOrderFront: self];
    }
    
    - (void) dealloc
    {
      RELEASE(window);
      [super dealloc];
    }
    
    @end
  • 接下来是配置gui.plist文件:
      {
       ApplicationDescription = "Hello World Tutorial";
       ApplicationIcon = "";
       ApplicationName = HelloWorld;
       ApplicationRelease = 0.1;
       Authors = "";
       Copyright = "Copyright (C) 200x by ...";
       CopyrightDescription = "Released under...";
       FullVersionID = 0.1;
       URL = "";
    }
  • 最后是比较重要的GNUmakefile:
    GNUSTEP_MAKEFILES=D:/GNUstep/GNUstep/System/Library/Makefiles
    
    include $(GNUSTEP_MAKEFILES)/common.make
    
    APP_NAME = GUI
    $(APP_NAME)_HEADERS = AppController.h
    $(APP_NAME)_OBJC_FILES = main.m AppController.m
    $(APP_NAME)_RESOURCE_FILES = guiInfo.plist
    
    include $(GNUSTEP_MAKEFILES)/application.make
  • 上述步骤中比较关键的是GNUmakefile的编写,其中GNUSTEP_MAKEFILES是我指定的GNUStep的安装目录的makefiles目录,APP_NAME是配置app名称,headers是header文件,如果存在多个.h文件,可以指定为*.h,OBJC_FILES为指定.h实现文件,如果有多个可以指定为*.m, RESOURCE_FILES为整个工程的属性配置文件。整个工程的截图如下:

  • 第二步:配置codeblocks,进入Settings->Compiler and Debugger->Gobal compiler setting选项卡中点击“copy”按钮,并将该compiler命令为GNU Compiler Cocoa(可以随意指定),如图:

  • 选择Toolchain executables ,设置compiler's installation directory 为你安装GUNStep的目录,我但前目录为D:\GNUstep,然后配置c compiler ,c++ compiler 等可执行文件,注意这个文件在D:\GNUstep\bin目录下,如图:

  • 注意下图所示的红色区域,一定要选择正确的make可执行文件,在GNUstep\msys\1.0\bin目录下,笔者的目录为D:\GNUstep\msys\1.0\bin\make.exe,配置正确之后,点击OK
     
  • 右键点击工程“gui”,选择“properties”,在"project setting"中勾选”this is a custom Makefile"复选框,Makefile的名称必须为GNUmakefile, "Execution Directory"选择工程所在文件目录。如图所示

     
  • 右键点击工程“gui”,选择“build options”,在debug分支中选择上一步配置好的compiler,即“ GNU Compiler Cocoa",然后在下方的"Make" commands中配置下面的选项,如下所示:

  • 上述步骤完成之后,Antr+F11重新编译工程,如果没有问题的话,会有如下输出:
  • -------------- Clean: Debug in gui ---------------
    
    Cleaned "gui - Debug"
    
    -------------- Build: Debug in gui ---------------
    
    Using makefile: GNUmakefile
    This is gnustep-make 2.6.1. Type 'make.exe print-gnustep-make-help' for help.
    Making all for app GUI...
     Copying resources into the app wrapper...
    Process terminated with status 0 (0 minutes, 1 seconds)
    0 errors, 0 warnings
     
  • 编译过程中可能出现以下错误:Compile-Error Windows : native-objc-exceptions does not match that of gnustep-base,解决办法如下,将 D:\GNUstep\GNUstep\System\Library\Headers\GNUstepBase\GSConfig.h :中BASE_NATIVE_OBJC_EXCEPTIONS     定义的值改为1即可。
  • 至此,我们已经可以在codeblocks中编译基于cocoa框架的应用,但是编译出来的文件在目录APP_NAME.app文件夹中,如何才能让编译的文件在bin\Debug目录中呢?打开GNUmakefile可以得知,该文件导入了两个系统提供的make文件,一个是common.make,另外一个是application.make文件,找到application.make文件,该文件在笔者的文件路径为D:\GNUstep\GNUstep\System\Library\Makefiles\Instance\application.make,打开该文件,修改APP_DIR_NAME的值为 $(GNUSTEP_BUILD_DIR)/bin/Debug,APP_DIR的值为$(GNUSTEP_BUILD_DIR)/bin/Debug 即可,这样就可以实现
  • 在codeblocks中编译运行。效果如图

     

  •     
    [2] Windows停架设自己的DNS服务器 NTBind
        来源: 互联网  发布时间: 2014-02-18
    Windows下架设自己的DNS服务器 NTBind
    Windows下架设自己的DNS服务器
    发表于 2007-09-17 由 charlee 相信有很多人都想架设自己的DNS服务器。我们知道世界上最好用的DNS服务器软件就是BIND;但是我辈使用Windows操作系统的人就无福享用这Unix下的顶级软件了。

    或者可以用Windows Server自带的DNS服务器试试?需要安装Server版的Windows不说,麻烦的配置和令人迷惑的图形界面就够受的了。

    难道就没有一个了吗?

    柳暗花明又一村,突然发现BIND居然有Windows版,这这这………… 赶快下载下来试一下,居然成功地配好了DNS。


    BIND的Windows版叫做ntbind,在isc的ftp上有下载。我下载的是ntbind-9.2.5版。解压之后运行安装程序,默认安装到C:\Windows\system32\dns下。

    装好之后就是配置工作了,不过在这之前建议先将 C:\Windows\system32\dns\bin 添加到 PATH 环境变量中,这样配置时就可以用 dig工具来代替难用的 nslookup了。然后再将自己机器的DNS地址改为 127.0.0.1。注意修改DNS时别忘记ISP提供的DNS地址,过一会儿要用到。

    打开 C:\Windows\system32\dns\etc 目录,建立配置文件 named.conf,内容如下:

    named.conf

    options {
        // zone文件的位置
        directory "C:\Windows\system32\dns\etc";

        // 无法解析的域名就去查询ISP提供的DNS
        // 在下面的IP地址位置上填写ISP的DNS地址
        forwarders {
            1.2.3.4;
            1.2.3.5;
        };

        // 仅允许本机和子网内的机器查询
        allow-query {
            127.0.0.1;
            192.168.0.0/24;
        };
    };

    // 根DNS
    zone "." {
        type hint;
        file "named.root";
    };

    // localhost
    zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; };
    };

    // localhost的反向解析
    zone "0.0.127.in-addr.arpa" {
        type master;
        file "localhost.rev";
    };

    // example.com
    zone "example.com" IN {
        type master;
        file "example.com.zone";
    };

    # End of named.conf
    然后逐个建立named.conf中提到的几个文件,都放在 C:\Windows\system32\dns\etc 下。

    named.root:可以从ftp.rs.internic.net(匿名FTP)上下载。

    localhost.zone:针对localhost的正向解析。

    $TTL 1D

    @       IN      SOA     localhost.      root.localhost. (
            2007091701          ; Serial
            30800               ; Refresh
            7200                ; Retry
            604800              ; Expire
            300 )               ; Minimum

            IN      NS      localhost.

    localhost.        IN      A       127.0.0.1
    localhost.rev:针对127.0.0.1的反向解析。

    $TTL    1D

    @       IN      SOA    localhost.    root.localhost. (
            2007091701          ; Serial
            30800               ; Refresh
            7200                ; Retry
            604800              ; Expire
            300 )               ; Minimum

                IN      NS      localhost.
    1           IN      PTR     localhost.
    example.com.zone:是我们为自己的域的正向解析配置。

    example.com.    IN  SOA   ns1.example.com.  root.example.com. (
            2007091701         ; Serial
            30800              ; Refresh
            7200               ; Retry
            604800             ; Expire
            300 )              ; Minimum

            IN    NS        ns1.example.com.

    *       IN    A         192.168.0.2    ; 将所有域名都泛解析到192.168.0.2上
    OK,这几个配置文件写好之后,启动命令行,输入以下命令:

    C:\> named -f -g -d 1
    即可在控制台启动named。如果不能启动请仔细观察输入结果并自行查找错误。

    然后你可以用dig命令来测试返回结果是否正确。

    C:\> dig www.google.com
    C:\> dig www.sina.com.cn
    你也可以打开浏览器,看看能否正常上网。另外因为我们配置了 example.com 的域,所以 abc.example.com 应该能访问你架设在 192.168.0.2 上的 Web 服务器。

    一切正常访问之后,我们还有一件事情要做:配置使用 rndc 命令来控制bind。请执行以下命令: C:> cd C:\Windows\system32\dns\etc C:\Windows\system32\dns\etc> rndc-confgen > rndc.conf

    即可在 C:\Windows\system32\dns\etc 下生成 rndc.conf 文件。编辑这个文件,并将该文件的后半部分剪切到 named.conf 末尾,配置即完成。

    重启 named,然后在命令行输入 rndc reload,应该能在named的控制台看到重新加载配置文件的信息,说明配置成功。

    最后一步,利用srvany将named安装为服务,即大功告成。(srvany需要安装Windows 2003 Server Resource Kit)

    instsrv ntbind C:\Windows\system32\dns\bin\named.exe
    参考文献

    ■Replace ms dns with bind9
    ■DNS HOWTO, 4.forwarding
    ■内部向けDNSサーバの構築
    ■名前解決の仕組みとゾーンファイルの設定
    此条目由 charlee 发表在 software 分类目录,并贴了 bind、dns、server 标签。将固定链接加入收藏夹。

        
    [3] 怎么更改Windows Server 2003企业版IE的安全级别
        来源: 互联网  发布时间: 2014-02-18
    如何更改Windows Server 2003企业版IE的安全级别

          Windows Servers 2003企业版的IE的安全级别被限制为高级,一般网站无法访问,如何在不添加信任站点的情况下更改安全级别呢?

          由于Windows Server 2003是微软为服务器设计的操作系统,所以微软认为使用服务器进行Internet浏览会增加服务器遭受潜在安全攻击的可能性,因此在默认设置下,Windows Server 2003系统启用了系统内的Internet Explorer增强安全配置。在这种安全设置之下,可以降低服务器遭受潜在安全攻击的可能性,但同时该设置将使部分网页无法正常显示,并且在浏览的过程中经常会发生需要将目标网站加入到信任站点列表后才能够访问的问题,个人用户使用起来会非常不便,因此我们需要改变这项安全设置。

          如果您决定不使用Internet Explorer增强的安全配置,则可通过“开始|控制面板|添加或删除程序”功能,在“添加或删除程序”对话框中单击“添加/删除Windows组件”。在弹出对话框中列出的Windows组件中清除“Internet Explorer 增强的安全配置”的选中状态,然后单击完成,就可以在重启动Internet Explorer浏览器后使增强的安全设置失效。

          如果您想保留增强的安全设置功能,而又希望尽量减少它带来的不便,那么可以在打开浏览器时弹出“系统已启动增强的安全设置”警告对话框时,选中左下角的“以后不显示这个信息”对话框来避免每次转到新的网页都收到一次警告。

          或者,您也可以点击“开始|控制面板|Internet选项”,在“Internet选项”对话框中单击“安全”选项卡,拉动滑块将Internet、本地Intranet、受信任的站点或受限制站点等区域按照您的需要进行设置


        
    最新技术文章:
    ▪文件转换有关问题     ▪ 3ds max 2009 mentalray遇到内存相关的错,该怎么解...    ▪ 文萃ocr的注册码哪位高手有
    ▪常见文件密码的设置与解除解决思路     ▪ 数据恢复软件哪个好用?该怎么处理     ▪ vmware高手帮忙解决一个常见有关问题
    ▪求会声会影的注册机啊 到处找不到 T_T,该怎么...    ▪ 急求!硬盘解密软件。解决思路     ▪ 大侠们有改过chrome的临时文件夹的吗?小弟我...
    ▪怎么在windows下查看计算机的内存大小     ▪ 宏基玩2k10的有关问题     ▪ 求日语操作系统;链接解决思路
    ▪怎样制作软件自动安装解决思路     ▪ UtrlEdit重新加载已更新的文件内容时,不让其...    ▪ 小弟我的数据库卸载后装不上怎么处理
    ▪win7的编程工具选择?该如何解决     ▪ 开机按回车咋办,该怎么解决     ▪ 怎么刻录一张系统盘
    ▪强行卸载如何用哦?     ▪ 为什么QQ音乐的乐库打不开,显示是一片空白...    ▪ 如何控制局域网其它电脑的流量啊宿舍人老...
    ▪AutoPlay Menu Loader 5.1.0.341,该如何解决     ▪ 100分求个软件免费或收费的都可以,最好熟...    ▪ 远程桌面连接如何设置磁盘共享
    ▪请教怎么知道TXT文件的编码方式呢     ▪ QQ收件箱中的邮件不知不觉被自动删除了解决...    ▪ qq如何去广告
    ▪双击C与C++程序设计学习与实验系统,就打开...    ▪ 急电脑黑屏的原因,该怎么解决     ▪ 请问Sdelete这个软件的使用方法
    ▪虚拟机中怎么切换     ▪ “假的”mp4视频文件怎么打开     ▪ XP照片缩略图和照片本身显示不一致解决思路...
    ▪激光检测仪数控机床日文的,该如何处理     ▪ 怎么打开*crp格式的文件     ▪ 联想Z465玩魔兽争霸黑屏,大侠帮帮忙解决一下...
    ▪u盘插入电脑时报错!解决方案     ▪ Pixelpop有人用过吗?解决方法     ▪ 加快解压速度小弟我有招
    ▪高分,小弟我是windows xp的系统,请教如何才...    ▪ 加密网页怎样破解密码?解决办法     ▪ 佛爱小弟我羊老师请进
    ▪Runtime Error (-1:0): Cannot Import dll,该如何解决     ▪ 关于刻录系统光盘的有关问题     ▪ CCPROXY的有关问题(结贴100%)
    ▪print screen键不能截屏?该怎么处理     ▪ 用Serv-U做了个FTP服务器,为什么浏览器不能...    ▪ ftp下载稍微大一点的文件时不让下载,该如何...
    IP地址数字互转 iis7站长之家
    ▪VisualSVN Server 经常异常覆盖如何解决     ▪ 怎么封装(打包)exe文件     ▪ 重新打开ie的自动密码保存要如何做
    ▪请教windows多久自动清空IE缓存     ▪ 高手帮忙看下这个autohotkey脚本,快捷复制粘贴...    ▪ 怎办?winpcap 4.1.2 安装失败!该怎么解决
    ▪ultraedit里,当选择列模式时,用用查找替换功...    ▪ intel MKL pardiso求解大型稀疏矩阵,是不是很浪...    ▪ cmd 中的管道是哪个程序在前?解决方法
    ▪金山词霸PDF取词插件解决方案解决思路     ▪ 想要学习ps,该怎么解决     ▪ WinRAR自解压时能否读取注册表中的信息,来...
    ▪怎么架设多对多媒体服务器     ▪ VMware解决方法     ▪ 腾讯Q+平台怎么申请接口
    ▪应用程序作为系统服务。解决办法     ▪ (文件编码有关的字符串替换)通过CMD批处理,...    ▪ 234.34.23.234:33674这个ip地址一般是用来做什么...
    ▪视频会议软件用什么样的好呢?解决办法     ▪ 怎么将ActiveX控件Cab包制作成EXE安装格式     ▪ 怎样从硬盘安装苹果雪豹系统,该如何处理
    ▪关于邮件组的有关问题!请专业邮箱技术支持...    ▪ 打印机有关问题     ▪ window下的vim怎么不产生备份文件
    ▪急 压缩文件夹,该怎么处理     ▪ Multisim软件如何样?那里有安装文件     ▪ 问个关于分区的小疑点啊很简单,来拿分啦
    ▪批处理高手帮忙了 啊 送分中,该怎么处理     ▪ wix打包发布 如何更改默认的安装包图标     ▪ 酷狗*krc歌词的文件结构及压缩算法
    ▪小弟我是个大笨鸟哪位高手帮帮小弟我     ▪ 哪款浏览器占用内存较少?解决办法     ▪ 有关问题
    ▪请教Polaris Office的文件格式能转换为pdf吗     ▪ wmp是用什么解码器比较好?该如何解决     ▪ 求Ardence.RTX.v7.0.SDK Ardence.RTX.v7.0.Runtime 下载解...
    ▪使用wireshark抓包,wireshark上显示的时间和pc时...    ▪ windows live mail 按send/receive 怎么不send,只receiv...    ▪ 某个exe程序始终无法运行,任务管理器里闪...
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3