DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CppCodeProviderの使い方

環境/言語:[C++2005]
分類:[.NET]

こちらのサイトでC#やVB.NETをコンパイルするためのコードがあって感動しました。
そこで応用でC++もコンパイルしてみたいと思いCppCodeProviderを使って同じようにやってみました。
しかしこれに限って「実装されていません」と出てしまいます。
実行する方法は存在するのでしょうか?
それともリリースに間に合わなかったのでそのうち実装されるのでしょうか?
2006/07/15(Sat) 03:02:29 編集(投稿者)

CppCodeProviderとMicrosoft.VisualC.VSCodeProviderを参照設定し、
 
#include "stdafx.h"
 
using namespace System;
using namespace System::CodeDom::Compiler;
using namespace Microsoft::VisualC;
 
int main(array<System::String ^> ^args)
{
    VSCodeProvider^ vccp = gcnew VSCodeProvider();
    ICodeCompiler^ icc = vccp->CreateCompiler();
 
    CompilerParameters^ cps = gcnew CompilerParameters();
    cps->GenerateExecutable = true;
    cps->OutputAssembly = L"cpphell.exe";
 
    String^ src =
        L"#include <stdio.h>\n"
        L"int main( void )\n"
        L"{\n"
        L"    printf( \"Hello World!\\n\" );\n"
        L"    return 0;\n"
        L"}";
 
    icc->CompileAssemblyFromSource( cps, src );
 
    return 0;
}
 
で試してみたところ、CompileAssemblyFromSourceでNullReferenceExceptionが出ました。
# warning C4947は出ましたけど。
 
VSCodeProviderをCppCodeProviderにするとCreateCompilerでNullImplementedExceptionが出ます
Blueさんわざわざ検証ありがとうございます。
多分環境の違いでメッセージが違うのだと思いますが、例外の種類も同じなので同じ現象でしょう。
やりたいことは動的なデータ構造に最適なコードをネイティブコンパイルして実行したかったのです。
■No16652に返信(和さんの記事)
> こちらのサイトでC#やVB.NETをコンパイルするためのコードがあって感動しました。
> そこで応用でC++もコンパイルしてみたいと思いCppCodeProviderを使って同じようにやってみました。
> しかしこれに限って「実装されていません」と出てしまいます。
> 実行する方法は存在するのでしょうか?

残念ながら現在は無理のようです。将来できるようになる可能性はあるようです(とたしかどこかにありました)。

DOBON.NET | プログラミング道 | プログラミング掲示板