cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

liblo: Lightweight OSC implementationのインストール

liblo本家のホームページはこちら。

http://liblo.sourceforge.net/

 

Downloadでは無く、下のViewGitからDownload Snapshotソースコードを持ってきます。POSIX環境なら、./configure,sudo make installで簡単にインストールできます。WindowsのMSVC環境では、もう少し面倒で、premake4というソフトウェアをインストールする必要があります。libloのbuildフォルダの中にpremake4.exeをコピーして、コマンドプロンプト上で、buildフォルダにcdで移り、

premake4.exe vs2010

を実行します。vs2010フォルダ内に移動して、vs2012でslnファイルを開きます。プロジェクトのバージョンの更新をするかどうか聞かれますので、行ってください。pthreadが必要になるので、POSIX Threads for Windowsからダウンロードして適当な場所においてください。*1

vs2012のプロジェクトのプロパティからインクルードパスを設定します。全部ビルドしたければ3つのプロジェクトとそれぞれのDebugDLL/RelaseDLL/DebugLib/RelaseLibの12箇所です。

pthreads-w32-2-9-1-release\Pre-built.2\include

同じようにプロジェクトを設定してx86/pthreadVC2.libをリンクできるようにライブラリパスを通してください。

 

 そのままビルドすると、lo_server_add_socket関数中で”void*のサイズが不明です。”といったエラーが出るので、ソースコードを一部修正してビルドが通るようにします。関数中ほどのこの記述の下2行を書き換えて、void*からchar*に変更します。char*でなくても、int*でも構いません。構わない理由は、ポインタはメモリアドレスを指すものなので、アドレスの表記はどの型でも同じ(多くのC言語環境ではポインタの実態はintと同じ)だからです。*2

  /* Update array of open sockets */

    if ((s->sockets_len + 1) > s->sockets_alloc) {

        char* sc; //void *sc;

        char* sp; //void *sp 

 ビルドが通ると、ルートディレクトリの/libに生成されたliblo.libが出来ていますので、自分のプログラムにこれをリンクして使用します。

*1:Premake 4.4-beta5からVS2012を直に作れるようになったみたいです。#include <sys/time.h>を#include<time.h>に変更

*2:寧ろvoid*も他の型のポインタと同じだと思われるので、ビルドが通らない理由が良く分かりません。