「software_development」カテゴリーアーカイブ

名古屋でVRハッカソンをやるためのUE4 勉強会 2限目に行ってきた

名古屋でVRハッカソンをやるためのUE4 勉強会 2限目に行ってきた。
名古屋ゲーム制作部というゲーム作りの好きな人が集まっている団体の勉強会だ。

前回の1限目に続いて、参加した。

今回はHMDの実機向けのソフトを動かすので、デスクトップPCを持ち込んだ。

続きを読む →

WindowsでUnicode版のFindFirstFileのAPIを使ってみたサンプルコード

昨日のWindowsでファイル名を変更するプログラムをANSI版APIからUnicode版APIに書き換えた話で、
とりあえずリネーム処理以外のFindFirstFileというAPIのUnicode版FindFirstFileWを使ったフォルダとファイルをスキャンする使い方のサンプルコードっぽいのを晒してみる。

cmd.exeで動かすと文字化けするので、スタートメニューからPowershellを起動してPowershellで動かせば文字化けせずにUnicodeのフォルダ名やファイル名が正しく表示される。
続きを読む →

Windowsでファイル名をまとめて変更するのに、C言語でプログラムを書いたのだけどUnicode文字のファイル名でハマって苦労した

Windowsでファイル名をまとめて変更しようとしていた。
で、何かスクリプト言語でちょろっと書いて一気に変換みたいなことをやろうと最初は思っていたのだけど、結局C言語でプログラムを書いてしまった。

ところがANSI版のAPIで書いたらMoveFileでうまく変更できないファイル名が出てきたので、Unicode対応のMoveFileWを使って書き直す等、もとのANSI版のAPIのプログラムをだいぶ書き直して動かした。

フォルダ内のファイルをスキャンしていくのにFindFirstFileWとFindNextFileWというAPIを使う。
使用する構造体はWIN32_FIND_DATAでなく、WIN32_FIND_DATAWを使う。

ファイル名はANSI版ならヌル文字を終端に入れたchar型の配列でよいのだけど、Unicode版はwchar_t型の配列を使う。

wchar_t配列型の文字列のフォルダ名やファイル名などを加工するのに、strcpyやstrcatが使えないので代わりにwcscpyやwcscatを使った。

文字定数は”foo”などと書く代わりにL”foo”と書いてUnicodeにしておかなければならない。

コマンドラインで動かすプログラムなのだけど、Unicodeを表示させるためにprintfでは駄目なので、printf(“%s”,str)と書くかわりにwprintfを使ってwprintf(L”%ls”,wstr)となどと書く。

cmd.exeから動かすとwprintfの表示が文字化けしてしまう。
コードページを変更するコマンドを使ってもどうもうまくいかない。
cmd.exeを使わずにPowershellで実行するとちゃんとwprintfの表示ができた。

知っている人にはきっと今更な話だが、ずっと自分はANSI版のAPIしか触ってなかったので。

—
つづく

Swiftでglibcを使うにはどうすればいいだろうか

Swiftでglibcを使うにはどうすればいいだろうか?

SwiftのLinux版(Ubuntu版)というのがあり、Mac版やiOS版みたいなフレームワークのライブラリが無いかわりにglibcを使うことができる。

それなら逆にMac版などでも同じようにglibcを呼び出すことができるのではないだろうか?

しかし、Ubuntu版のSwiftのディレクトリのincludeの中身を探してみたのだが、それっぽいものが見つからなかった。
import Glibcとすれば、ちゃんと使えているのだけど、どこにその仕掛けがあるのだろう?

—
追記
Ubuntu版のSwiftのlibディレクトリをよく調べたらusr/lib/swift/linux/libswiftGlibc.soというファイルがあった。
さらにそのサブディレクトリのusr/lib/swift/linux/x86_64の中にglibc.modulemapとGlibc.swiftdocとGlibc.swiftmoduleというのがあった。
このライブラリのソースコードとかを調べてみたら何か分かるのかもしれない。

—
余談だが、emacsにおける新バージョンのglibcとの非互換問題はどうなったのだろう?
・Emacsは衰退しました – Qiita

第7回 Center CLR 勉強会に行ってきた

第7回 Center CLR 勉強会に行ってきた。
今回は、会場はMisocaの会議室で開催された。
20170121_105019

内容は、
・XAML(仮)
XAMLの話

・Reference sourceについて
.NET Frameworkのソースコードブラウザ(webアプリ)の話

・Xaramin FormsとAzure Mobile AppsとMobile Center
 Xamarinを使ったアプリとAzureクラウドとの連携の話

・2017年Legacyとどう向き合って行くか
 Visual Studioの古いやつのサポートが切れる話など

LT
・P/Invokeの話
・.NET Coreとilasm(CoreCLR)の話 (自分)
続きを読む →

Ubuntu上で.NET Coreを使うのだけど、ilasmが使えないないのでCoreCLRをビルドした

Ubuntu上で.NET Coreを使うのだけど、ilasmが使えないないのでCoreCLRをビルドした。

趣味のコンパイラを自作するのにilasmを使ってたが、これを.NET Core/Ubuntuで動かそうと思った。
→ CIL(MSIL)中間コードを生成するTiny BASICコンパイラを作ってみた

Ubuntuで.NET Core(バージョン1.1)を使う方法は、公式(英語)の手順が出ている。
→ https://www.microsoft.com/net/core#linuxubuntu
続きを読む →

Windows上で.NET CoreのCoreCLRをビルドしてみた

Windows上で.NET CoreのCoreCLRをビルドしてみた。

Windows以外でUbuntu上などでビルドするのは難しくないようだ。
→ 連載:「○○してみた」日記:CoreCLRをビルドしてみた
コンパイラのclangとCMakeというビルドツールがあればすんなりビルドできるようだ。
(ただし、mscorlib.dllが生成できないみたいだが)

Windows上でビルドするのを試してみた。
公式だと英語の情報だけど、以下のドキュメントに方法が書いてある。
→ Build CoreCLR on Windows
Visual Studio 2015と、CMake、Python、Git、Powershell 3.0以上、が必要だと書いてある。
(あと、testをビルドするには、DotNet Core SDKも必要とある)

自分の場合、
・Visual Studio 2015
・CMake 3.7.1
・Python 2.7.9
・git 2.7.1
・PowerShell 2.0 (Windows7に最初から入っていた物?)
を使った。
環境変数PATHを書き換えて、cmd.exeやPowershellで上記のものをコマンドラインで使えるようにしておく。

ソースコードはgithubから持ってくる。
https://github.com/dotnet/coreclr
続きを読む →

makeというビルドツールで、Makefileを書いてソースコードをビルドするのが好きだった

makeというビルドツールで、Makefileを書いてソースコードをビルドするのが好きだった。

ソースコードの更新された部分からその依存関係を自動で調べて更新すべき部分のみをビルドすることができるという賢い仕組みで、非常に便利だ。

最初にPC-98用のTurbo-Cに付属のmakeに触ったのが使い始めだった。
逆にTurbo-Cの統合環境にはどうも馴染めなかった。
EZ Editorや、VZ Editorに慣れてしまって、それ以外のエディタに馴染めなかったからだと思う。

Makefileの書き方は、MS‐DOSを256倍使うための本で覚えた。

MS‐DOSを256倍使うための本〈Vol.3〉(Amazon)
続きを読む →