精华内容
下载资源
问答
  • SecureCRT是一个调试终端软件,支持SSH,同时支持Telnet和rlogin协议,是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。有流行CRTTelnet客户机的所有特点...
  • VC2010的MFC程序想调用.net做的WebService,发现IDE中不能直接引用,所以瞒天过满的在VC2008中引用此Web,然后将生成的头文件放到VC2010工程中,同时VC2010工程属性中要有公共语言运行时支持 经编译发现...

    VC2010的MFC程序想调用.net做的WebService,发现IDE中不能直接引用,所以瞒天过满的在VC2008中引用此Web,然后将生成的头文件放到VC2010工程中,同时,VC2010工程属性中要有公共语言运行时支持

    经编译发现,此时的MFC使用不能选“在静态库中使用MFC”,这样会提示如下

    >cl : 命令行 error D8016: “/clr”和“/MTd”命令行选项不兼容

    所以选择“在共享 DLL 中使用 MFC”

     

    图片

    展开全文
  • debugShell为VC++程序(包括控制台和图形程序)提供一个控制台shell界面,开发者能在该shell下直接输入函数或者变量名。...该客户端同时支持对C++代码进行解释执行,可以把测试代码写成脚本进行解释执行。
  • 如何编写跨平台应用程序

    千次阅读 2009-08-10 23:44:00
    我们使用的许多著名的应用程序,比如VC,WINRAR,SVN等等,都既能在WIN下运行,也支持命令行操作。这是很爽的,习惯在可视化下操作的同志,可以使用GUI界面操作,习惯怀旧或者喜欢命令行操作的同志,可以使用命令...

    我们使用的许多著名的应用程序,比如VC,WINRAR,SVN等等,都既能在WIN下运行,也支持命令行操作。这是很爽的,习惯在可视化下操作的同志,可以使用GUI界面操作,习惯怀旧或者喜欢命令行操作的同志,可以使用命令操作。同时我们也可以根据不同情况灵活运用,如果你要把硬盘上多于一百个的影视文件分别压缩成压缩包,并加入说明文件,使用可视化操作显示是一件费时费力的工作,但使用命令行写一个简单的批处理循环,就可以轻松完成。这时你会十分感激那些提供操作系统的大佬们,他们在操作系统里集成的一个简单的SHELL的英明的决策使你轻松了多少呀。

    这里简单介绍一下如何写一个程序,使我们的程序可以支持跨平台操作,既带命令行,又可以可视操作。

    要写一个简单的跨WIN和DOS的程序是很简单的,要是还想能在LIUNX上运行,那可能会复杂一些。

    由于对LIUNX知之不多,这里只对制作WIN和DOS程序做一些简单的介绍。制作DOS和WIN下运行的程序,有两种方法。

    第一种方法:

    先用标准C或者C++写一个DOS程序,然后使用其他可视化编程工具如VC,VB或者DELPHI编写一个界面,然后使用BUTTON通过调用函数WinExec或者ShellExecute或者CreateProcess来执行写的DOS程序。

    这里使用转载来的别人的例子来说明如何调用:

    三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。

    WinExec 两个参数,前一个指定路径,后一个指定显示方式。

    ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。

    CreateProcess  一共有十个参数,不过大部分都可以用NULL代替,它可以指定进程的安全属性,继承信息,类的优先级等等。如果我们要得到足够多的关于新的进程的信息,控制新的进程的细节属性,若要达到这些目的,我们就需要使用CreateProcess函数了。

    三个SDK函数( WinExec、ShellExec、CrateProcess )的语法:

    (一)WinExec

    这个函数最简单,只有两个参数,原型如下:

          UINT WinExec(

          LPCSTR lpCmdLine,   // 命令路径

          UINT uCmdShow      // 显示方式

          );

    使用方法如下:

    WinExec("Notepad.exe", SW_SHOW);  // 打开记事本

    WinExec("D://Program Files//Test//Test.exe",SW_SHOWMAXIMIZED); // 以最大化的方式打开Test.exe

    需要注意的是若用 SW_SHOWMAXMIZED 方式去加载一个无最大化按钮的程序,譬如Neterm,Calc 等等,就不会出现正常的 窗体,但是已经被加到任务列表里了。

    这个函数只能打开exe文件。

    需要的头文件:windows.h,winbase.h(前者是试验出来,后者是msdn上说明),另外,这两者的先后顺序不能变。

    msdn上的说明:[url]http://msdn.microsoft.com/en-us/library/ms687393[/url](VS.85).aspx

    (二)ShellExecute

    原型如下:

          HINSTANCE ShellExecute(

          HWND hwnd,           //父窗口句柄

          LPCTSTR lpOperation,   //操作, 打开方式 "edit","explore","open","find","print","NULL"

          LPCTSTR lpFile,         //文件名,前面可加路径

          LPCTSTR lpParameters,   //参数

          LPCTSTR lpDirectory,    //默认文件夹

          INT nShowCmd          //显示方式

    );

    使用方法如下:

    ShellExecute(NULL,"open","C://Test.txt",NULL,NULL,SW_SHOWNORMAL); // 打开C:/Test.txt 文件

    ShellExecute(NULL, "open", "[url]http://www.google.com/[/url]",  NULL, NULL, SW_SHOWNORMAL); // 打开网页[url]www.google.com[/url]

    ShellExecute(NULL,"explore", "D://C++",NULL,NULL,SW_SHOWNORMAL); // 打开目录D:/C++

    ShellExecute(NULL,"print","C://Test.txt",NULL,NULL, SW_HIDE); // 打印文件C:/Test.txt

    ShellExecute不支持定向输出。

    这个函数可以打开任意文件,会调用系统注册的程序来打开对应后缀名的文件。

    需要的头文件:windows.h,shellapi.h(前者是我试验出来的,后者是msdn说需要的)。另外这两者的先后顺序不能变。

    msdn上说明:[url]http://msdn.microsoft.com/en-us/library/bb762153[/url](VS.85).aspx

    (三)CreateProcess

    原型如下:

          BOOL CreateProcess(

          LPCTSTR lpApplicationName, //执行程序名

          LPTSTR lpCommandLine,  // 参数行

          //下面两个参数描述了所创建的进程和线程的安全属性,如果为NULL则使用默认的安全属性

          LPSECURITY_ATTRIBUTES lpProcessAttributes,  // process security attributes

          LPSECURITY_ATTRIBUTES lpThreadAttributes,   // thread security attributes

          BOOL bInheritHandles,  // 继承标志

          DWORD dwCreationFlags, // 创建标志

          LPVOID lpEnvironment,  // 环境变量

          LPCTSTR lpCurrentDirectory,   // 运行该进程的初始目录

          LPSTARTUPINFO lpStartupInfo,  // 用于在创建子进程时设置各种属性

          LPPROCESS_INFORMATION lpProcessInformation //在进程创建后接受相关信息

          );

    使用方法如下:

                 PROCESS_INFORMATION pi;

                           STARTUPINFO si;

                           memset(&si,0,sizeof(si));

                           si.cb=sizeof(si);

                          si.wShowWindow=SW_SHOW;

                           si.dwFlags=STARTF_USESHOWWINDOW;

                           bool fRet=CreateProcess("D://putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi);

    这个函数可以打开任意文件,会调用系统注册的程序来打开对应后缀名的文件。

    需要的头文件:windows.h,winbase.h(前者是试验出来,后者是msdn上说明),另外,这两者的先后顺序不能变。

    msdn上的说明:[url]http://msdn.microsoft.com/en-us/library/ms682425[/url](VS.85).aspx

    可以看出,通过上面的几个不同的方法,都可以实现在应用程序中打开其他应用程序的目的,其中有些方法可能会麻烦一点,所以就需要我们根据不同的目的去选择最适合自己的方法去实现自己的目的!

    关于三个SDK函数: WinExec, ShellExecute,CreateProcess 的其他注意事项:

    1、定义头文件

    这个是引用新函数都必须注意的内容。但是MS的头文件引用顺序有点怪,比如上面的三种清理。另外,如果用了预编译,那么记得在任何源程序中的#include “stdafx.h”之前的引用都会失效,从其后才生效。(不可否认,预编译有他的好处,尤其当程序很大的时候,但是任何好处都是要付出代价的)

    2、定义路径

    C++中所表示的路径要用 " // "而不是平常所用的" / ",所以以上三个函数表示路径都为:

    Disk://Directory//...//File name

    WinExec("D://Program Files//Test//Test.exe",SW_SHOWMAXIMIZED);

    ShellExecute(NULL,"open","C://Test.txt",NULL,NULL,SW_SHOWNORMAL);

    bool fRet=CreateProcess("D://putty.exe",NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi)

    3、注意文件的路径

    在程序a调用程序b的时候,b原来的默认的当前路径都会变成a的当前路径。所以,一定要注意。可以养成使用绝对路径的习惯,另外,记得打开文件之类的操作,一定要验证是否有错。

    重点说一下第二种方法:

     

    也许你觉得这样制作的程序交流不便,程序文件太多了,万一传递中丢失了什么文件,就会导致整个程序失效。下面介绍一下如何在VC设计的可视化程序里添加代码实现在DOS下运行。当然不是在真正的DOS下运行,但可以在WIN命令行里运行。在VC生成的默认项目里,一般都会有一个包含项目名字的APP的类,这个类里有一个函数InitInstance,MFC包装了API函数WinMain,在全局对象实例化后(App a; ),就进入WinMain函数,在里面由MFC这个框架已经写好对InitInstance()的调用,我们进入MFC的源码即可看到),因为该函数是一个虚函数,所以我们实例化继承CWinApp类的App类时,会自动调用App::InitInstance();修改该函数,把DOS的处理代码加入进来,然后RETURN,使其不进入创造可视化窗口函数中。

    这里简单举例,我要搞一个读取BMP文件内容并写入别的文件的功能,写好了GUI部分后,我修改InitInstance函数。在其内添加如下内容:

    CCommandLineInfo   cmdInfo;  
     ParseCommandLine(cmdInfo); 
     if (strlen((char *)m_lpCmdLine) != 0)
     {
      CFile file;
      file.Open(_T("aa.h"), CFile::modeCreate);
      file.Close();
      if (memcmp((unsigned char *)m_lpCmdLine, (unsigned char *)"-all", 4) == 0)
      {
       CmdlineOperateAll();
      }
      else
      {
       CmdlineOperate((LPSTR)(LPCTSTR)(char *)m_lpCmdLine);
      }
      return FALSE;
     }

    这段内容一定要加在

    #ifdef _AFXDLL
     Enable3dControls();   // Call this when using MFC in a shared DLL
    #else
     Enable3dControlsStatic(); // Call this when linking to MFC statically
    #endif

    之后。我添加的代码是对命令行参数做分析,提供不同的操作。

    两个操作的函数内容如下

    void CmdlineOperate(CString filename)
    {
     // TODO: Add extra validation here
     CString   FileName; 
     CFile   File;
     BITMAPINFO info;
     unsigned char *temp;
     BITMAPFILEHEADER file_head;
     CString m_ret;
     
     FileName = filename;
     if (File.Open(FileName.GetBuffer(_MAX_PATH), CFile::modeRead)) 
     {
      File.Read(&file_head, sizeof(BITMAPFILEHEADER));
      File.Read(&info.bmiHeader, sizeof(BITMAPINFOHEADER));
      
      long width=info.bmiHeader.biWidth;
      long height=info.bmiHeader.biHeight;
      CString com;
      CTime tm;
      CString curtime;
      tm=CTime::GetCurrentTime();
      curtime=tm.Format("日期:%Y年%m月%d日%x  */ /r/n");
      com.Format("/*    the size is :%dX%d, the char is : %s ; ",
       width, height, (File.GetFileName()).Left((File.GetFileName()).GetLength() - 4));
      com += curtime;
      m_ret += com;
      File.Seek(file_head.bfOffBits,CFile::begin);
      temp = new unsigned char[(File.GetLength()-file_head.bfOffBits) +1];
      File.Read(temp, (File.GetLength()-file_head.bfOffBits));
      for (int i = 0, j = 1; i < (int)(File.GetLength()-file_head.bfOffBits); i++, j++)
      {
       CString str;
       str.Format("0X%02X,", temp[i]);
       m_ret += str;
       printf("0X%02X", temp[i]);
       if (j % width == 0)
       {
        m_ret += _T("/r/n");
        printf("/n");
       }
      }
      
      File.Close();
      delete(temp);
     }
     File.Open(_T("aa.h"), CFile::modeNoTruncate|CFile::modeWrite);
     File.SeekToEnd();
     File.Write((LPSTR)(LPCTSTR)m_ret,m_ret.GetLength());
     File.Flush();
     File.Close();
    }
    void CmdlineOperateAll(void)
    {
     // TODO: Add extra validation here
     WIN32_FIND_DATA fd;
     HANDLE hd=::FindFirstFile((LPCTSTR)"*.bmp",&fd);  //开始查找
     
     if(hd==INVALID_HANDLE_VALUE)
     {
      AfxMessageBox("没有找到文件");
      return;
     }
     
     CmdlineOperate(fd.cFileName);
     while(FindNextFile(hd,&fd)) //继续查找
     {
      CmdlineOperate(fd.cFileName);
     }
    }

    主要是查找文件,内容写入另一个头文件

     

    展开全文
  • gdb基础命令和常用操作补充

    千次阅读 2015-01-23 11:42:51
    GDB是Unix下的一个程序调试工具,类似于windows下面的VC调试器,区别在于GDB采用全命令行控制。 使用GDB需要在编译时使用-g选项,gcc支持-g –O选项同时使用,但如果还在调试阶段,尽量不要-O2,也不要删除(strip)...

    GDB是Unix下的一个程序调试工具,类似于windows下面的VC调试器,区别在于GDB采用全命令行控制。
    使用GDB需要在编译时使用-g选项,gcc支持-g –O选项同时使用,但如果还在调试阶段,尽量不要-O2,也不要删除(strip)符号表。作用如下:
    让程序按照自己定义的要求运行,不必每次改变程序
    让程序在设置的断点处停住,并且检查程序的执行情况
    动态改变程序的执行环境


    一、启动调试

    gdb <program> 启动程序进行调试
    gdb ./bin/chat_server
    gdb --args ./bin/chat_server -c conf/cache_server.conf

     在 UNIX 下用 ps 查看正在运行的程序的 PID (进程 ID), 然后用 gdb <program> PID 格式
    挂接正在运行的程序。
    gdb attach <pid> 调试一个已经运行服务程序
    gdb ./bin/chat_server $(pgrep  chat_server)


    gdb <program> core 调试程序core down时候产生的core文件 
    gdb ./bin/chat_server core
    可以先使用 gcore pid (tgid,主线程id)产生正在运行程序的 core 文件,然后进行调试。

    Attach到后台进程,将操作预先输入好,避免影响程序正常运行
    sudo gdb ./bin/chat_server `pgrep chat_server` <<END
    b HandleAccept
    c
    p (char *)inet_ntoa(pstSctx->stClientAddr.sin_addr)
    p ntohs(pstSctx->stClientAddr.sin_port)
    quit
    END

    二、gdb基础命令







    三、gdb常用操作补充

    1. ulimit -c unlimited; 调试core文件
    bt/where/info s 显示函数调用堆栈
    up n 向调用链根部移动n个函数
    down n 向调用链叶部移动n个函数
    f n 选择函数调用链上编号为n的函数,0表示当前函数
    info files 显示core文件里面的segment映射
    如果core文件函数调用栈乱掉,可以参照 http://devpit.org/wiki/x86ManualBacktrace 恢复堆栈。

    2. 设置观察点
    watch     <expr>  expr 值变化时,停止程序
    rwatch    <expr>  expr 值被读时,停止程序
    awatch    <expr>  expr 值被读或被写时,停止程序
    info watchpoints  查看当前观察点信息

    3.反汇编
    set disassembly-flavor intel # 设置反汇编格式
    disassemble可以反汇编当前函数或者指定的函数,单独用disassemble命令是反汇编当前函数,如果disassemble命令后面跟函数名或地址则反汇编指定的函数。

    4.前面讲过step命令可以一行代码一行代码地单步调试,而这里用到的si/ni命令可以一条指令一条指令地单步调试。
    info registers可以显示所有寄存器的当前值。在gdb中表示寄存器名时前面要加个$,例如p $esp可以打印esp寄存器的值,如esp寄存器的值是0xbff1c3f4,所以x/20 $esp命令查看内存中从0xbff1c3f4地址开始的20个32位数。

    5. p 命令内存输出格式:
    • d: ⼗十进制
    • u: ⼗十进制⽆无符号
    • x: ⼗十六进制
    • o: ⼋八进制
    • t: ⼆二进制
    • c:   字符
    如 p/x var

    6. set listsize 50 修改源代码显示行数; 此外还有set args 设置参数;set var 设置变量值

    7.设置位置断点,设置断点命令b (break的简写)
    b linenum
    b function
    b filename:linenum
    b filename:function
    b *address
    b if <condition>

    8. 查看当前运行信息
    info b <breakpoints>  breakpoints 为设置的断点的标号
    info args/frame/locals/line  filename:function
    info line 配合disassemble使用可查看程序汇编代码
    其中info frame 显示的当前堆栈信息比frame详细,可以先用frame num 切换堆栈,where/info s/bt 可以查看堆栈调用链


    9. 条件式中断 b test if a == 10  类似 condition 4 a == 30 (4 是bk num)

    10. 删除断点可以使用 clear和d(delete的简写)
    clear删除断点, 使用方法和b命令类似
    d  [breakpoints]    breakpoints 为设置的断点的标号

    10. 启动和查看程序
    setargs 设置程序运行参数
    run运行程序,使用方式如:r   <args>
    List  显示程序源代码命令,使用show listsize 查看显示代码的行数

      list <function/linenum/filename:function/filename:linenum/-/+> ,-向上翻动,+向下翻动

    p var/expression(filename::var/function::var),打印变量值


    11. 恢复运行程序和单步调试程序
    continue,继续运行程序
    next  <count> 单步跟踪,遇到函数不进入函数
    step  <count> 单步跟踪,遇到函数会进入该函数
    finish 直到函数运行完成,打印函数信息
    until   在循环体内跟踪程序,直到整个循环结束
    until+行号: 运行至某行,不仅仅用来跳出循环

    12. x 命令可以显示指定地址的内存数据。
    格式: x/nfu [address]
    • n: 显示内存单位 (组或者行)。
    • f: 格式 (除了print 格式外,还有字符串s 和 汇编i)。
    • u: 内存单位 (b: 1字节; h: 2字节; w: 4字节; g: 8字节)。
    x/8w 0x0804843b # 按四字节(w)显示 8组内存数据
    x/8i 0x0804843b # 显示8 行汇编指令

    13. 进程与线程
    info proc mappings # 相当于 cat /proc/{pid}/maps 查看maps内存数据
    可以在 pthread_create 处设置断点,当线程创建时会生成提示信息。[New Thread 0xb7e78b70 (LWP 2933)]
    info threads # 查看所有线程列表
    where # 显示当前线程调用堆栈
    thread num # 切换线程 [Switching to thread 1 (Thread 0xb7e796c0 (LWP 2932))]#0 0xb7fe2430 in __kernel_vsyscall ()

    14. 其他零散

    调试子进程。
    (gdb) set follow-fork-mode child

    临时进入Shell执行命令,Exit返回。
    (gdb) shell

    调试时直接调用函数。
    (gdb) call test("abc")

    使用 "--tui" 参数,可以在终端窗口上部显示一个源代码查看窗。
    $ gdb --tui hello

    set scheduler-locking off|on|step 在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。
    off 不锁定任何线程,也就是所有线程都执行,这是默认值。
    on 只有当前被调试程序会执行。
    step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

    在GDB下,我们无法print宏定义,因为宏是预编译的。但是我们还是有办法来调试宏,这个需要GCC的配合。在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。另外,你可以使用下述的GDB的宏调试命令 来查看相关的宏。
    info macro – 你可以查看这个宏在哪些文件里被引用了,以及宏定义是什么样的。
    macro – 你可以查看宏展开的样子。


    提示找不到源文件:
    编译程序员是否加上了-g参数以包含debug信息。
    路径是否设置正确了。使用GDB的directory命令来设置源文件的目录。

    如果要打印一个序列化过的结构体,这个序列太长的话,往往会被gdb省略掉,如:
    gdb>p string
    "xxxx",…"" //会有省略号出现,无法看到完整的字符串
    此时可以设置:
    gdb>set print elements 0
    再次:
    gdb>p string
    "xxxx","yyyy",""//显示完整的字符串

    查看命令帮助。
    (gdb) help b

    最后就是退出命令。
    (gdb) q

    和Linux Base Shell习惯一样,对于记不住的命令,可以在输入前几个字母后按Tab补全。

    ▪ tbreak          temporary breakpoint
    ▪ rbreak          reg-ex breakpoint
    ▪ break xxx if yyy    conditionally break at xxx if condition yyy holds
    ▪ commands         list of commands to be executed when a breakpoint is hit
    ▪ silent          special command to suppress output on breakpoint hit
    ▪ save breakpoints    save a list of breakpoints to a script
    ▪ save history       save history of executed gdb commands
    ▪ call            call a function in the inferior
    ▪ watch -l          watchpoint based on address (location)
    ▪ rwatch           read watchpoint
    ▪ info line foo.c:42   show PC for line
    ▪ info line * $pc     show line begin/end for current program counter
    ▪ thread apply all bt   backtrace for every thread
    ▪ dprintf           dynamic printf
    ▪ python:           define custom commands by inheriting from gdb.Command class
    ▪ python:           hook events to invoke python functions using gdb.events.stop.connect
    ▪ gcc’s -g and -O are orthogonal


    经验:如果某个函数的局部变量发生访问越界,有可能并不立即产生段错误,而是在函数返回时产生段错误。

    参考:
    《linux c 编程一站式学习》
    《C 学习笔记》 by雨痕
    Give me fifteen minutes and I’ll change your view of GDB

    展开全文
  • 代码行数统计工具

    2018-09-06 17:14:47
    可用于对VC++、C++ Builder、Delphi、VB、C/C++、...17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
  • 软件功能: 可用于对VC++、C++ Builder、Delphi...17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
  • 软件功能: 可用于对VC++、C++ Builder、Delphi...17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
  • java智能源码统计专家

    2011-08-17 18:13:24
    可用于对VC++、C++ Builder、Delphi、VB、C/C++、...17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。
  • 于此同时,我们的环境程序,也必须同时支持此种模式(一般这种模式,称之为命令行模式)。  对于使用FinalBuilder的人来讲,就有必要了解相关程序的命令行调用方式。这样有助于我们使用和编写任务。如果是我们自己...
  • 于此同时,我们的环境程序,也必须同时支持此种模式(一般这种模式,称之为命令行模式)。  对于使用FinalBuilder的人来讲,就有必要了解相关程序的命令行调用方式。这样有助于我们使用和编写任务。如果是我们自己...
  • 于此同时,我们的环境程序,也必须同时支持此种模式(一般这种模式,称之为命令行模式)。  对于使用FinalBuilder的人来讲,就有必要了解相关程序的命令行调用方式。这样有助于我们使用和编写任务。如果是我们自己...
  • windows下vim&mingw平台的搭建

    千次阅读 2008-07-08 19:29:00
    编程学到现在,终于接触到C++的核心部分——标准库部分(这是很久前读过的一篇文章的观点,认为C++的核心就在标准库和泛型算法,同时这篇文章还认为C++对面向对象的支持并不是其核心)。由于普便认为VC对标准的支持...
            编程学到现在,终于接触到C++的核心部分——标准库部分(这是很久前读过的一篇文章的观点,认为C++的核心就在标准库和泛型算法,同时这篇文章还认为C++对面向对象的支持并不是其核心)。由于普便认为VC对标准的支持不够完善,在回到家后没有LINUX和GCC的条件下,只好用MINGW平台。似乎是逐渐适应了VIM和命令行编译,回到集成环境后虽然感觉很方便,可是缺少了VIM的多种快捷键,总感觉不顺手。直到今天,在网上读到一篇文章,讲在WINDOWS环境下搭建VIM平台,才找回了在LINUX下编程的感觉。
            在WINDOWS下搭建VIM和GCC环境很方便,下载VIM7.1.EXE,和普通软件安装一样,安装后需要添加MINGW的环境变量,就是建立名为PATH,内容为“安装文件夹/BIN”,添加好后可以通过命令行进入VIM,用法和在LINUX下一样,进入后的操作也大体一样,只是最终生成的文件是EXE文件,不能通过”./文件名“执行,直接键入文件名即可。
    展开全文
  • 17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。 使用方法: 首先在“请选择需统计的文件名或...
  • 完美解码 v20130819

    2019-11-09 21:13:44
    如要支持 VC-1 视频的播放,建议升级 Windows Media Player 到 11/12(也可单独安装其runtime,只安装WMP11安装程序解包后得到的wmfdist11.exe)。三.静默安装的命令行参数如下:/S - 静默安装 (不显示用户界面,...
  • 但是最大的缺点是它是基于命令行的应用程序,但同时也是它的优点。因为用户可以为它定制各种不同的用户界面。MPLAYER提供了非常丰富的命令接口,用户只要给它相应的命令制就可以实现各种不同的功能。比起WINDOW自带...
  • 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。...
  • 1.目录TCP.UDP高级编程,是一个高级的聊天程序,程序中集成了TCP和UDP聊天程序,注意程序运行的时候需要设定命令行参数,可以在项目设置中进行设定,或者通过命令行参数直接执行。在书中有说明; 2.目录TCP聊天是...
  • 文本语音朗读组件系统

    热门讨论 2008-12-03 18:58:38
    6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。...
  • 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。...
  • 6.提供了多种朗读播放文本的方式,除可以直接在Internet Explorer浏览器和Microsoft Word中播放外,还可以在控制台使用命令行模式来朗读和播放,支持对文本文件的朗读播放,也支持对系统粘贴板中的内容进行播放。...
  • 如要支持 HD-DVD/BD VC1 Remux(TS) 的播放,需升级到Windows Media Player 11才能解码VC-1视频(也可单独安装其runtime,只安装WMP11安装程序解包后得到的wmfdist11.exe)。 三.发布旨在分享,从不捆绑任何流氓/...
  • QQ是支持命令行登录的,也就是说QQ的exe程序支持参数,下面举一个参数登录的例子: e:\qq\qq.exe /START QQUIN:00000000 PWDHASH:4QrcORm6Wau+VuBX9g+IPg== /STAT:41 比如有上面这个参数,前面的e:\qq\qq.exe是QQ的...
  • Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • Wav2Letter++:公共域,完全用C++编写的快速开放源代码的语音处理库,同时使用ArrayFire张量库和flashlight机器学习库来实现最高的效率。 生态学 生物信息,基因组学和生物技术 BioC++:生物信息学的C++计算库。...
  • Praat能够在图形和命令行两种用户界面下运行,但两种界面的目标文件(可执行文件)各自独立,以Windows版为例,即分为praat.exe和praatcon.exe两个可执行文件,其中后者只能通过命令行方式从控制台调用。 该部分...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

vc同时支持命令行