C言語で書いたソースコードを共用し,Android用とiOS用とWindows用の各ライブラリを作っています.作ったライブラリをテストするためのフロントアプリもそれぞれ作っています.今回,リファクタリングを兼ね,開発環境を一部変えました.
実行環境 | アセンブリ | 開発環境 | 言語 |
---|---|---|---|
Android | ライブラリ(.so) | Visual Studio 2008+cygwin →Android Studio |
C |
フロントアプリ(.apk) | Eclipse →Android Studio |
Java | |
iOS | ライブラリ(.a) | XCode | Objective-C |
フロントアプリ(.ipa) | Flash Builder | Action Script | |
Windows#1 | WINAPI型ライブラリ(.dll) | Visual Studio 2008 →Visual Studio 2015 |
C |
フロントアプリ(.exe) | Flash Builder | Action Script | |
Windows#2 | クラスライブラリ(.dll) | Visual Studio 2008 →Visual Studio 2015 |
C++/CLI |
フロントアプリ(.exe) | Visual Studio 2008 →Visual Studio 2015 |
C++/CLI |
Visual Studioのバージョン変更により,既定の.NET Frameworkが3から4に上がります.それに伴い,.NET Framework 3.5対応だった既存ライブラリの参照に小技が必要になりました.
文字コード由来の警告が出ます.Visual StudioはBOM付きUTF-8に対応していても,XCodeはBOM付きUTF-8に対応していないとかXcode上で編集するとBOMが消えるという噂を聞きました.かといって,BOM無しUTF-8(UTF-8N)だと,Shift-JISだと勘違いした誰かが引っかかってきます.ネットを漁っても,記事が古いかもしれなかったり信憑性が怪しい個人の書き込みだったりします.まだとっちらかったまま.
C言語のlong型のサイズが違います.学生時代の20年くらい前は,「short型は2バイト,long型は4バイト,int型は処理系依存で2バイトか4バイト」となっていたので,int型ではなくlong型を使っていました.それを引きずって,入社初期に書いていた,そして今リファクタリングしようとしているコードには,long型がしばしば登場しています.ところが現在,long型が4バイトなのはVisual Studioだけで,XCodeとAndroid Studioは8バイトになっています.そんなもんだから,途中でlong型ポインタで処理するところがあると,メモリ参照系のエラーが出ます.直すにしても,ソースコードを共用しているので,よくよく考える必要があります.
非常にややこしい.もっとサクッと行けると思っていたのに,まだ戦時中です.