• ベストアンサー

C#からC++/CLIにサンプルソースを書き換えたい。

VC++/CLIは、過去のソースをそのまま利用できる(マネージ・アンマネージ混在可能)?ので、C++/CLIで作成したく、 以下のURLにC#のサンプルソースはあるので、 http://www.geocities.jp/hatanero/socket1.html これからVC++/CLIに書き換えたいのですが、ここは全然違うというものがありましたら、教えて下さい。 C#からVC++/CLIに変換できるツールはあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.3

はっきりいってC#とCは全く別言語です。 CとC++のような互換性はありませんし、 エディタの"すべて置換"機能で機械的にバンバン置き換えれば完成! というほど、甘く見ないほうがよいと思います。 きちんとC#及びC++/CLIを学習することを強く勧めます。 >C#からVC++/CLIに変換できるツールはあるのでしょうか? ツールの存在は未確認です。 しかし、あったとしても頼り切らない方がいいと考えます。 MicrosoftとしてはC#とC++を役割分担させたい方向のようです。 http://blogs.msdn.com/somasegar/archive/2007/08/08/visual-c-futures.aspx (英語です) 具体的には C++はネィティブ開発に特化させ、.NETの開発はC#を主力にしたい模様です。 この様に、言語の特性が違う以上、 対応する機能(クラス等)が存在しなかったりすると考えられます。 無理やり変換しても、とても非効率、読みにくいコードで、 改修も一苦労ということになりかねません。 参考程度で、結局は人が介入せざるを得ないと思います。

その他の回答 (2)

回答No.2

> 構造体の書き方でつまずきました。 マニュアルを読んでください。 ref struct { public:  System::String^ a;  int b; };

回答No.1

大差ありませんね、おおむね機械的に書き換え可能です。 # どの程度で"全然違う"とするのかわからないけども

kourei
質問者

補足

構造体の書き方でつまずきました。 struct Test { public string a; public int b; } で以下のようになります。 error C2146: 構文エラー : ':' が、識別子 'string' の前に必要です。

関連するQ&A

  • C#とC++/CLIの連携について

    C#とC++/CLIの連携について C++/CLI側にC#で作成した変数を渡したいのですが、やり方がわかりません。 そもそも一つのソリューションにC++/CLIとC#を混在することはできるのでしょうか。 やはりC++/CLI側はDLLにして、C#がそのDLLを利用するのでしょうか。

  • 全角半角変換 C++/CLI

    C++/CLI(VC++2008) で (1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか (2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか  

  • C++/CLIの有効指定???

    .NET C++ であるサンプルプログラムをコピーして実行しました すると次のエラーが発生しました "#USING"ではC++/CLIが有効になっている必要があります 確かにソース文には #USING ステートメントがあります 色々調べましたが C++/CLI を有効に指定する方法が分かりません どのようにすれば良いかご指導をお願い申し上げます

  • C++/CLI .NetFrameWork

    こんにちは、現在自分はVC++のC++/CLI .NetFrameWorkを使ってソフト開発しています。 それについての質問なのですが、textBoxから取得した文字をシフトJISへシフトJISコードを 文字コードに変換してtextBoxに表示することは可能なのでしょうか?

  • C++/CLIとC#の連携について

    いつも拝見させていただいております。 現在、C++/CLIとC#にて連携を行っているのですが、C++/CLIで作成したクラス配列 がC#側でどのようにすれば受け取れるのか方法がわかりません。 C++/CLIで作成しているクラス配列はSystem::Collections::Generic::Listを使用 して配列化しています。 下記がC++/CLIのソースになります。 List<testClass>^% testClass::GetList() { List<testClass>^ lpTestClassList = gcnew List<testClass>(); testClass^ lpTestClass; lpTestClass = gcnew testClass(); lpTestClassList->Add(lpWatchServiceMasterInfoWrapper); return lpTestClassList; } これをC#側で使用しようとすると下記エラーが発生します。  「この言語によってサポートされていません」 C++/CLI⇒C#間の連携ではListクラスを使用することは不可能なのでしょうか? クラスを配列にして引き渡したいだけなので、他の方法等含めて何か参考になることがありましたら ご教授ください。 よろしくお願い致します。 開発環境  C++/CLI ⇒ DLL(ネイティブなコードを参照するためのラッパー用DLL)  C# ⇒ アプリケーション

  • C++/CLIで、アンマネージC++のDLLを使用する方法

    こんにちは。 C++/CLIのプログラムで、アンマネージC++のDLLを使用したいと考えています。 ネット上をいろいろ調べたのですが、具体的な手段がわかりません。 見よう見まねで以下のようにサンプルを作成したのですが、コンパイルすら通る状況になりません。 かなり基本的な問題がありそうで申し訳ないのですが、下記の問題点を教えていただけないでしょうか。 また、参考になりそうなサイトなどありましたら教えていただけると大変助かります。 ■アンマネージC++のDLL VC++6.0で、以下のように、単にデバッグ文字列を書き出すだけのDLL関数を作成しました。 (このDLLが使用できることは他のVC++6.0プロジェクトで確認済みです) /*-----Func.h-----*/ #ifndef __FUNC_H__ #define __FUNC_H__ AFX_EXT_CLASS void WINAPI ShowMessage(); #endif //__FUNC_H__ /*-----Func.cpp-----*/ #include "StdAfx.h" #include "Func.h" #include <stdio.h> void WINAPI ShowMessage() { CString str = "This is The Message from DLL Func!\n"; OutputDebugString(str); } ■C++/CLI でのDLL使用 Visual Studio2008にて、C++のCLRプロジェクトを作成して、以下のようにDLLを使用する準備を行いました。 1.ソリューションエクスプローラのヘッダフォルダに、Func.hを追加 2.プロジェクトのフォルダに、上記で作成したFuncのDLLとLIBファイルを置く。 3.プロジェクトの「プロパティ > C/C++ > プリプロセッサ > プリプロセッサの定義」に、"_AFXDLL"を追加 4.mainクラスのソースに以下を記述 /*----------*/ using namespace System; #include "Func.h" #using "ManagedDllApp.dll" int main() { ShowMessage(); return 0; } /*----------*/ この状態でコンパイルすると、 「エラー 3 error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。 d:\xxx\Func.h 4 Console 」等、Func.h周りで複数のエラーが出ます。 また、Func.hをインポートしないでコンパイルすると、 「エラー 3 fatal error C1113: #using が 'd:\xxx\manageddllapp.dll' で失敗しました。 」と、Dllでエラーが出ます。 よろしくお願いいたします。

  • C++/CLI System::String::Fotmat 16進表記

    お世話になります C++/CLIを使用して、16進表記で悩んでいます Format( "0x{0:x2}, 1 ); 期待する値は、"0x01"ですが、"0x1"と表記されてしまいます Formatを使用した場合は仕方ないのでしょうか? ほかにマネージを"0x%2x"のように変換する方法を ご存知の方がいらっしゃいましたら、御教授願います よろしくおねがいします

  • C++/CLIを用いて画像をクリップボードにコピー

    VC++でC++/CLIでアプリケーションを作成しています。 そこで,pictureBox1の画像を,クリップボードにコピーしたいのですが,方法が分からず困っています。 Clipboard::SetDataObject(); の () の中に何を渡せばいいのでしょうか?

  • FortranをC++(VC++)へ変換

    FortranをCまたはC++へ変換したいと考えています。 f2cを使うと、一応変換は行ってくれるものの、出来あがったCのプログラムをコンパイルする際、fortranのライブラリを参照する必要があるなどの制約が生じてしまいます。 VC/VC++に対応したプログラムソースへ変換するツールをご存知ないでしょうか? また、今だと、VC#まで変換してくれるツールがあると非常に便利なのですが・・・ 大量のソースコードを変換する必要があり、変換時のミスなどを考えるとツールで機械的に変換する方法を探しています。

  • c++/cliでのクラス作成方法について

    現在,VC++2008のC++/CLIを用いて以下のようなプログラムを作成しました。 String^ moji = textBox1->Text; Double num; Double const; Double kekka; Const = 10; Bool bRet2 = double::TryParse(moji,num); If (Const > num){ Kekka = num; } form上のtextBox1内の文字が数値に変換でき,且つ,10未満ならkekkaにその値をいれるというものです。 上記の処理をクラス化するためには,どのように記述すればよいでしょうか? C++の参考書などを読んで試してみたのですが,うまくいきませんでした... わかる方がいらっしゃいましたら,ご教授よろしくお願いいたします。

専門家に質問してみよう