こんにちは、株式会社CFlatです。 C#には、実行環境が32ビットか64ビットかを問わず、適切なモードで実行できる、AnyCPUという仕組みが存在します。 ところがこの機能、裏を返せば実行時まで32ビットか64ビットかわからないという事でもあるわけですので、AnyCPUをサポートしていない言語……例えばCやC++/CLIで作ったDLLを使いたい場合、DllImportとの相性がすこぶる悪いことになります。というのもDllImportはコンパイル時にDLLの読み込みパスを指定するため、実行時に「32bitだったらこのDLL、64bitだったらこのDLL」とはできないのです。 このような場合、どのような解決策を使うにせよ、何らかの制約を強いられることになります。 そんなわけで、幾つかある解決策の長所短所をまとめてみました。 (1) 全部32bitで固定する C#側を32bitに固定することで