kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Visual Studio 11でWin32プロジェクトを作成すると日本語ファイル名になる

Win32プロジェクトのデフォルト名にローカライズ名を初期値に使用している | Microsoft Connect
何気に作ってびっくりしました。ちなみにVisual Studio 2010ではプロジェクトの初期値になにも入っていません。個人的にはプロジェクト名が日本語というのは全く問題ないと思うのですが、このまま生成したら、プロジェクトの子の指定に従って、日本語名のモジュールができてしまいます。
Win32では別に日本語ファイル名を使用したdllを作ってもいいけど、Dependency Walkerが対応していないのと、あともう一つ使用時になんか困ったことがあったけど…なんだったかな。とにかく後々結構使いづらいです。

初期値が「Win32 プロジェクト1」となっています。

既定の生成オプションが$(TargetName)を使用します(プロジェクトと同じ名前です)。

よって、日本語のdll名が生成されてしまいます。シンボルのテンプレートを生成していれば、こんな風に日本語の関数名まで作られます。生成するとLNK4232の警告(非ASCIIを使っているので相互運用に問題がある)が出ます。
ところでいつの間に日本語を含むシンボルOKになったんだっけ?

// これは、エクスポートされた変数の例です。
WIN321_API int nWin32プロジェクト1=0;

// これは、エクスポートされた関数の例です。
WIN321_API int fnWin32プロジェクト1(void)
{
    return 42;
}

// これは、エクスポートされたクラスのコンストラクターです。
// クラス定義に関しては Win32 プロジェクト1.h を参照してください。
CWin32プロジェクト1::CWin32プロジェクト1()
{
    return;
}

というわけで、ここはオーバーローカライズかなぁと思います。最初に名前変えればいいというだけなんですけどね。