mf_417
شنبه 03 اسفند 1387, 12:46 عصر
سلام
من یک dll دارم که با delphi نوشته شده و تابع زیر را Export کرده:
WideString __stdcall _Get_CurrDevSerial();
در VC++ بصورت زیر آنرا فراخوانی می کنم:
typedef __declspec(dllimport) BSTR* (__stdcall *Get_CurrDevSerial_t)();
Get_CurrDevSerial_t gcds = (Get_CurrDevSerial_t) GetProcAddress (hDll, "_Get_CurrDevSerial");
if (gcds)
gcds();
که به مجرد فراخوانی آن خطایی مبنی بر این که از Calling Convension اشتباه استفاده کردم دریافت می نمایم در حالی که در هر دو از stdcall استفاده نموده ام.
مشکل فقط با widestring است و توابع ای که int برمی گردانند بطور کامل و درست فراخوانی می شوند و مقدار درست هم بر می گردانند.
البته من فقط من باب تست بقیه convension ها را هم تست کرده ام که فرقی نکرد و قاعدتا اگر مشکل مربوط به stdcall می بود نمی باست بقیه توابع هم کار کنند.
به همین دلیل فکر می کنم مساله مربوط به widestring می باشد.
کسی نمی داند معادل widestring دلفی در Visual C++ چیست؟؟
لطفا راهنمایی کنید.
من یک dll دارم که با delphi نوشته شده و تابع زیر را Export کرده:
WideString __stdcall _Get_CurrDevSerial();
در VC++ بصورت زیر آنرا فراخوانی می کنم:
typedef __declspec(dllimport) BSTR* (__stdcall *Get_CurrDevSerial_t)();
Get_CurrDevSerial_t gcds = (Get_CurrDevSerial_t) GetProcAddress (hDll, "_Get_CurrDevSerial");
if (gcds)
gcds();
که به مجرد فراخوانی آن خطایی مبنی بر این که از Calling Convension اشتباه استفاده کردم دریافت می نمایم در حالی که در هر دو از stdcall استفاده نموده ام.
مشکل فقط با widestring است و توابع ای که int برمی گردانند بطور کامل و درست فراخوانی می شوند و مقدار درست هم بر می گردانند.
البته من فقط من باب تست بقیه convension ها را هم تست کرده ام که فرقی نکرد و قاعدتا اگر مشکل مربوط به stdcall می بود نمی باست بقیه توابع هم کار کنند.
به همین دلیل فکر می کنم مساله مربوط به widestring می باشد.
کسی نمی داند معادل widestring دلفی در Visual C++ چیست؟؟
لطفا راهنمایی کنید.