■57880 / inTopicNo.1) |
C#のoutをC++に(call by reference) |
□投稿者/ ken (13回)-(2011/03/19(Sat) 23:58:21)
|
分類:[C++/CLI]
http://dobon.net/vb/dotnet/string/encryptstring.html のC#サンプルプログラムををVisual C++ 2010に移植して勉強しています。もとのC#で
public static string EncryptString(string sourceString, string password) { (中略) GenerateKeyFromPassword(password, rijndael.KeySize, out key, rijndael.BlockSize, out iv); rijndael.Key = key; rijndael.IV = iv; (中略) }
private static void GenerateKeyFromPassword(string password, int keySize, out byte[] key, int blockSize, out byte[] iv) {
(中略) key = deriveBytes.GetBytes(keySize / 8); iv = deriveBytes.GetBytes(blockSize / 8); }
となっていていて、keyとivはoutを使って、call by referenceされている?ようです。 一方、これをC++にしようとしているのですが、
static String^ EncryptString(String^ sourceString, String^ password){ (中略) array<unsigned char>^ key; array<unsigned char>^ iv; GenerateKeyFromPassword(password, rijndael->KeySize, key, rijndael->BlockSize, iv); rijndael->Key = key; rijndael->IV = iv; (中略) }
static void GenerateKeyFromPassword(String^ password,int keySize, array<unsigned char> key, int blockSize, array<unsigned char>^ iv){
(中略) key = deriveBytes->GetBytes(keySize / 8); iv = deriveBytes->GetBytes(blockSize / 8); }
としても、ビルト時にエラーは出ませんが、key、iv共に、参照渡しが出来ていません。非常に恥ずかしい質問ですが、どうすればよいのでしょうか? あと、key、ivが、C#ではByte型、C++ではarray<unsigned char>になるようです。
|
|