アンマネージドC++をC#に変換するツール/ユーティリティへのポインタを持っている人はいますか? 私はhttp://www.pinvoke.net/サイトを試しましたが、このAPIの参照が見つかりませんAddUsersToEncryptedFile
これはquestionにあります。アンマネージドC++コードをC#に変換する
答えて
一般的にはこれがある本当にハード、C#のよりさまざまな機能を提供++ Cので: テンプレートなど友人、ゼロ終端文字列、管理されていないポインタ、COMを、 は、C++をパースするの雌犬であることは言うまでもありません仕事。
これを実行するには、名前と型の解決を含む完全なC++パーサー、それぞれの構造(問題のあるかないか)を等価なC#コードに変換する方法、これらのアイデアを自動翻訳ステップにエンコードする手段、そしてコードのうち翻訳がうまくいかない部分(通常は "手作業で修正する")で何をすべきかについての計画です。すべての必要な機械を提供DMS Software Reengineering Toolkitを使用
は、 私の会社、セマンティックデザインは、実際にそのようなツールを構築しますが、C#のにC++の800K SLOCを移動したい大規模な顧客のために、それを使ったことがありません。プロジェクトの方法の約2/3は、顧客が鳥かご管理の改造をしていたため、新しい管理者は、費用を節約するために進めないことにしました(ツール自体はうまくいっていました)。
あなたはそのAPIの宣言が必要ですか?あなたが使用できるPInvoke Interop Assistantと呼ばれるツールがありますが、私は個人的に私はDIYのアプローチを好む。それほど難しいことではありません。
あなたがC#にC++コードを移植している場合は、次の定義
struct EFS_CERTIFICATE_BLOB
{
public int dwCertEncodingType;
public int cbData;
public IntPtr pbData;
}
struct ENCRYPTION_CERTIFICATE
{
public int cbTotalLength;
public IntPtr pUserSid;
public IntPtr pCertBlob;
}
struct ENCRYPTION_CERTIFICATE_LIST
{
public int nUsers;
public IntPtr pUsers;
}
[DllImport("advapi32.dll", CharSet=CharSet.Unicode)]
static extern uint AddUsersToEncryptedFile(string lpFileName, ref ENCRYPTION_CERTIFICATE_LIST pUsers);
@Mattias s - 全コードリストは、このサイトにあります http://msdn.microsoft.com/en-us/library/aa363765(VS.85).aspx –
を試してみてください、あなたはおそらく、C++/CLIに管理されていないC++コードを変換する検討すべきです。その後、より制御されたマナーで(つまり、一度に1つずつ、理想的にはユニットテストを行って)、C#に移植することができます。
C++/CLIに変換する代わりに、SWIGを使用して既存のアンマネージC++コードをラップすることもできますが、この方法を使用すると移行がより困難になります。
あなたはこの話が面白い見つけることがあります。
Disclosing How C#-SQLite Was Ported to .NET
SQLiteはCプログラムですが、いくつかの良いハイレベルのヒントがここにあります。
- 1. C++コードをC#コードに変換する
- 2. (アンマネージド)C++
- 3. アンマネージドC(++)とC#互換のAESライブラリ/ APIはどれですか?
- 4. xamlをC#コードに変換する
- 5. X8B8G8R8をR8G8B8に変換するC++コード
- 6. C#SHA1コードをGolangに変換する
- 7. バイナリパッキングC#コードをPHPに変換する
- 8. ノックアウトマッピングC#モデルをノックアウトモデルに変換する、C#コードをjsonに変換しない
- 9. RコードをCコードに変換
- 10. C++コードをCに変換するには
- 11. 簡単なC++コードを自動的にC#に変換する
- 12. Clangを使ってC++をCコードに変換する
- 13. アンマネージドC++ Win32 APIまたはC#?
- 14. Objective-CコードをプレーンCに変換する
- 15. C#WindowsフォームコードをC#のAndroidコードに変換する
- 16. Cコードを.netに変換する(C#またはVB.net)
- 17. スタティックコードアナライザー:アンマネージドC++ Visual Studio 2008
- 18. ClangをカスタマイズしてC++コードをCに変換します
- 19. C++からASCIIコードをモールスコードに変換
- 20. Python KivyプログラムをCコードに変換
- 21. PythonプログラムをC/C++コードに変換しますか?
- 22. ポートCのコードをC#に変換します。ポインタのトラブル
- 23. C++/MEX(Matlab)コードをスタンドアロンC++に変換できますか?
- 24. コードをC++からC#に変換します
- 25. LinQコードをC#コードからVB.Netに変換する
- 26. C#コードをPL/SQLコードに変換する
- 27. CコードをJNIコードに変換する方法
- 28. 配列を宣言する際にC++コードをC#に変換する
- 29. c#RSACryptoServiceProviderをC++に変換する
- 30. CプログラムをC#に変換する
音が面白いです:) –
結果のコードはどのようにメンテナンス可能で慣用的ですか?私は機械翻訳されたコードベースで時間を過ごしました。私は元の言語を使いたいと思っていました。 「本当のプログラマーがFORTRANをどの言語でも書くことができれば」、FORTRANからの自動翻訳は「目標」をうまく満たすことに成功します。 – AProgrammer
悪い翻訳者を簡単に作成できます:個々の言語演算子をコンテキストに関係なくターゲット言語に直接マッピングするだけです。言語構造をマッピングする必要がありますが、アカウントコンテキストを利用することができます(DMSはアプリケーション全体からファクトを収集し、各ポイントで生成されたものを制御するために使用できます)。どちらの手法でも、コードはより保守性に優れています。 –