rtplib的编译、测试

一天JRTPLIB的编译,终于搞通了。

  /****************  编译  ****************************************/
  
   过程如下:

     1.下载JRTPLIB包,具体地址:

        http://www.bairuitech.com/upimg/soft/jrtplib-3.7.1.rar   或者
        http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib。


     2. 解压后的文件夹中包含两个目录,jrtplib-3.7.1和jthread-1.2.1(多线程的lib,因为jrtplib用到多线程)

    
     3. 这里使用VC6(网上多说要求安装Vs6sp6,我电脑没安,或者说是安了我也不知道)加以编译。
       (好像VS2003-2005多能编译通过,我用自己电脑上的vs2010编译没通过,说是什么“...二进制...”什么的)
       (VS2005编译会有warning,但不影响),主要是vs2005与VC6里面对于this指针不同的规则定义。
        在编译jthread和jrtplib之前:
        在project -> settings -> C/C++ -> Code generation:use run-time library中,
        对于debug,选择:Debug Multithreaded DLL,对于release,则选择:Multithreaded DLL。


     3-1. 首先编译jthread库,编译好后,然后将jthread-1.2.1/src内的"jmutex.h"和"jthread.h"两个头文件放入jrtplib-3.7.1/src目录下,

          然后将jrtplib-3.7.1/src文件夹下所有头文件中的<jmutex.h>和<jthread.h>语句修改为"jmutex.h"和"jthread.h",
          需要修改的文件为:
                            rtpudpv4transmitter.h、
                            rtpsession.h 和
                            rtppollthread.h。
         
          编译时注意编译方式和jthread.lib一致,
          并且设置路径包含jtrplib所有头文件,路径设置方法:工具(Tools) -> 选项(options) -> 目录(directories) -> include files
          (好像做不做这一小步无所谓,做了也没什么作用,我基本上没做),编译好jtrplib.lib


 
  /****************  测试  ****************************************/
  过程如下:
 
     1. 使用的是vc6,因为我电脑上的vs2010根本不读我用vc6编译后的jtrplib.lib,说是二进制什么的,是乱码(要是编译我是用vs2003以上版本
        编译的,那么vs2010应该会读的)。
 
     2. 新建一个空的控制台应用程序(你想建别的也行,随便了),File -> New -> Projects -> Win32 Console Application,  选择好路径,填一         
        个名称即可;然后进程序,FileView视图下,Source Fies点中后File -> New ->Files -> C++ Source File 填写好一个应用程序名称即可。
        (这里我填写的是server,vc6会跟我们新建一个server.cpp文件)保存,关掉vc6。    

     3. 现在该建的也建好了, 既然我们上面编译好了两个lib那肯定是要用到的撒。
       
        这里,我提一下lib的作用:lib是编译过程中的链接文件,跟dll不同,dll是运行文件。若别人系统中没有该dll,你得把dll跟你的exe放一起,
                                 lib就不同了,只要能运行成功后,即使生成的exe放到没有这个lib的系统下也是能运行的,所以你不需要慌,只要
                                 能成功的生成exe或者dll就ok了。       
       
       目前有两个方案:
                      1: a. 把lib放到系统文件下,编译器会去找这个lib的。d:/vc98 / lib中(我的是这个路径,其他人的根据实际情况而定)
                         b. 同时jrtplib-3.7.1/src中的所有头文件h也放到系统文件夹下。d:/vc98 / include中(我的是这个路径)
                     
                      2: a. 把lib放到跟server.cpp同一目录下(vs2005我就不知道是不是这样了,应该差不多)
                         b. 同时jrtplib-3.7.1/src中的所有头文件h也放到跟server.cpp同一目录下
     
               其中,1、2中的a 和 b是可以互相组合的,当然把这些头文件h都放在系统文件夹下不是很环保,因为这些h很多的。我自己习惯1的a
                      跟2的b搭配,当然直接是2也不错

    
     4. 现在是代码问题了。
               在server.cpp的顶部加入:                    
                     #pragma comment(lib,"ws2_32.lib")  //这个肯定是在系统文件夹下,因为这个lib不是我加的,是编译器自己就有的
                    
                     #pragma comment(lib,"jrtplib.lib") //以下这两个lib你可以这样写在程序里面,以供调用,也可以在编译器中设置,而不需要这
                     #pragma comment(lib,"jthread.lib") //两行代码。Projects -> Settings -> Link -> Object/library modules 中添加
                                                        //jrtplib.lib jthread.lib (注意,当中有空格)

                 
          下面再加几句代码试试。
             #include "rtpsession.h"
             void main()
             {
                
             }
            运行,成功,不会说不存在jrtplib.lib、jthread.lib 以及打不开rtpsession.h的情况!

 

 

你可能感兴趣的:(多线程,dll,exe,include,编译器,generation)