PDA

View Full Version : سوال: چگونه نوع مقدار بازگشتي تابع رو stdcall قرار بدم؟



bamzi software
پنج شنبه 11 فروردین 1390, 11:55 صبح
سلام و خسته نباشيد
سال نو مبارك..

من با c# يك class library براي ساخت dll ساختم .

حالا ميخوام نوع مقدار بازگشتي تابع رو stdcall قرار بدم..

چطور بايد اينكار رو انجام بدم؟

__stdcall‌ رو بايد بعد از نوع تابع بنويسم؟
از چه Using اي بايد استفاده كنم؟

ممنون ميشم سريعتر راهنماييم كنيد

r00tkit
پنج شنبه 11 فروردین 1390, 12:29 عصر
حالا ميخوام نوع مقدار بازگشتي تابع رو stdcall قرار بدم..
سوالت اشباه هستش stdcall نوع باز گشتی نیست این یه Calling convention (http://en.wikipedia.org/wiki/Calling_convention) هستش و به طور پیش فرض Calling_convention تو C# همین stdcall هستش

اینا رو بخون :

http://cplus.about.com/od/introductiontoprogramming/a/conventions.htm

http://www.codeproject.com/KB/cs/cdeclcallback.aspx

و....

bamzi software
سه شنبه 16 فروردین 1390, 15:01 عصر
از اين dll ميخوام در نرم افزار ديگه اي استفاده كنم(متاتريدر).

اين لينك رو پيدا كردم..اما مثل اينكه يه جايي بايد كدم رو از C# به C++ تبديل كنم كه كمي پيچيده هست برام.

http://www.codeguru.com/csharp/.net/cpp_managed/windowsservices/article.php/c14735

اما فكر ميكنم تنها راهش همين باشه،درسته؟

bamzi software
چهارشنبه 17 فروردین 1390, 12:04 عصر
براي تبديل اين كد از C# به C++ مشكل دارم:


public string Encrypt(string plainText)
{

byte[] initVectorBytes = Encoding.ASCII.GetBytes("laksjdhfgmznxsdf");
byte[] saltValueBytes = Encoding.ASCII.GetBytes("pass1");
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
PasswordDeriveBytes password = new PasswordDeriveBytes(
"pass2",
saltValueBytes,
"SHA1",
2);

byte[] keyBytes = password.GetBytes(256 / 8);
RijndaelManaged symmetricKey = new RijndaelManaged();
symmetricKey.Mode = CipherMode.CBC;
ICryptoTransform encryptor = symmetricKey.CreateEncryptor(
keyBytes,
initVectorBytes);
MemoryStream memoryStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(memoryStream,
encryptor,
CryptoStreamMode.Write);
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
byte[] cipherTextBytes = memoryStream.ToArray();
memoryStream.Close();
cryptoStream.Close();
string cipherText = Convert.ToBase64String(cipherTextBytes);
return cipherText;
}

با converter (دانلود كردم) كه تبديل ميكنم كلي خطا داره.
ممكنه راهنماييم كنيد؟