スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 自業自得なのだが | トップページ | 動かし始めた »

形だけはビルドできた

今日も、AG-ムービーカッターのUbuntu用ネイティブ版のコードを弄っていたのだが、形だけはビルドできた。つまり、Ubuntu用のGUI操作クラスにWindows用の処理クラスを追加して実行ファイルが出来たのだが、WIN32APIの関数はまだダミーだ。

昨日書いたように、Windows用の処理クラスには、主に変数の型に問題があったため、そのままでは使えなかったのだが、今日は、とりあえず、変数の型を変更してビルド出来るようにした。

で、今日の時点では、変数の型を変更した、といっても、unsigned longをDWORDに変更した程度の変更ばかりなので、変更後のソースをWindows環境に持っていっても、そのまま使える筈だ。

ただし、WIN32APIの関数をダミー定義してある現段階では、このままでは動作しないのは当然の話なのだが、このダミー関数にLinux用の処理を実装していくにあたって、大きな問題が一つある。

それは何なのか、というと、WIN32APIの関数では、各種処理でHANDLEが多用されているのだが、Linux環境では、このHANDLEというモノが使えないのだ。

例えば、Windows環境では、CreateFile関数でファイルオープンすると返送されるのはHANDLEだ。このHANDLEがファイル操作時にしか使われないのであれば、ラッパーでそれに相当するLinux用のオブジェクトに変換してやれば良いのだが、Windows環境では、MutexやEventを作っても返送されるのはHANDLEなので、単一のHANDLEという型を使ってLinux上で同等の処理を実現するのは、面倒なのだ。

まあ、面倒と言っても、HANDLEを返送する時に、内部的に管理する特性記述用のオブジェクトを返送してやれば、複数の処理で使えるHANDLE型は出来上がるのだが、Windows環境でコーディングしている時にも、このHANDLE型というのはソースコードを見ていても、何者なのか、というのが分かり辛かったので、この際なので、Windows側のソースコードを変更するつもりだ。

Windows側のソースを変更してしまうと、そのソースをWindowsに持っていくとそのままでは動作しなくなるのだが、Windowsで使う場合には、今回定義する型を全てHANDLE型に再定義してやれば、それで事足りる筈だ。

ちなみに、一応はビルド出来たので、Java版と同じように、まずは、AviFileというクラスのReadOpenメソッドを動作させようとしたのだが、いきなり、クラッシュしてしまった。

その理由を調べてみた所、どうも、スタックサイズが足りないようだったので、どうやってスタックサイズを増やすのかなあ、と、ネットで調べてみたのだが、Linuxの場合、Windowsなんかとは違って、実行ファイルのバイナリにスタックサイズを埋め込むのではなくて、実行ファイルがOSに対して実行時にサイズを増やすように要求するようになっているようだ。

ただし、スタックの上限サイズは16MB程度のようなので、あまり無茶は出来ないかもしれない。まあ、オブジェクトをヒープに作れば問題は無いのだが。

= この記事に関連する公開中ソフト =

AG-ムービーカッター for Ubuntu 12.04LTS

AG-ムービーカッター for Ubuntu12.04LTS

(2013/12/07追加)

« 自業自得なのだが | トップページ | 動かし始めた »

トラックバック


この記事へのトラックバック一覧です: 形だけはビルドできた:

« 自業自得なのだが | トップページ | 動かし始めた »

2020年4月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google