zoncpp
پنج شنبه 21 آبان 1394, 09:15 صبح
سلام،
درحال نوشتن یک پروژه IDL هستم در VC++
قرار هست Dll ساخته شده در این پروژه را در پروژه ها C# استفاده کنم.
متندها و property ها لازم را اضافه کرده و در C# براحتی استفاده میکنم. اما به یک متد جدید احتیاج دارم که یک آرایه ای از کلاس تعریف شده خودم را برگرداند و سی شارپ آنرا به صورت یک آرایه دریافت کند.
مثلا در پروژه یک کلاس دیتا ایجاد کرده ام (Add ATL Simple Object) و نام آن IMyClass می باشد. وقتی این کلاس مقدار بازگشتی یک متد میباشد مشکل ندارم و در سی شارپ هم قابل استفاده است. اما نیاز دارم که آرایه ای از این کلاس را در مقدار بازگشتی متد قرار دهم.
نحوه تعریف متد و کد نویسی برای مقدار دهی آرایه بازگشتی (در پروژه VC++) چگونه است؟
متدی که من اضافه کردم به صورت زیر است، اما نمیدانم کد داخل تابع GetTest را چگونه بنویسم
//--- in .idl file
[id(8)] HRESULT GetTest([out,retval] SAFEARRAY(IMYClass*)* arr_data)
//--- in .h file
STDMETHOD(GetTest)(SAFEARRAY * arr_data);
//--- in .cpp file
STDMETHODIMP CIMY_Interface::GetTest(SAFEARRAY * arr_data)
{
// Code ????
}
لطفا راهنماییم کنید. ممنون
درحال نوشتن یک پروژه IDL هستم در VC++
قرار هست Dll ساخته شده در این پروژه را در پروژه ها C# استفاده کنم.
متندها و property ها لازم را اضافه کرده و در C# براحتی استفاده میکنم. اما به یک متد جدید احتیاج دارم که یک آرایه ای از کلاس تعریف شده خودم را برگرداند و سی شارپ آنرا به صورت یک آرایه دریافت کند.
مثلا در پروژه یک کلاس دیتا ایجاد کرده ام (Add ATL Simple Object) و نام آن IMyClass می باشد. وقتی این کلاس مقدار بازگشتی یک متد میباشد مشکل ندارم و در سی شارپ هم قابل استفاده است. اما نیاز دارم که آرایه ای از این کلاس را در مقدار بازگشتی متد قرار دهم.
نحوه تعریف متد و کد نویسی برای مقدار دهی آرایه بازگشتی (در پروژه VC++) چگونه است؟
متدی که من اضافه کردم به صورت زیر است، اما نمیدانم کد داخل تابع GetTest را چگونه بنویسم
//--- in .idl file
[id(8)] HRESULT GetTest([out,retval] SAFEARRAY(IMYClass*)* arr_data)
//--- in .h file
STDMETHOD(GetTest)(SAFEARRAY * arr_data);
//--- in .cpp file
STDMETHODIMP CIMY_Interface::GetTest(SAFEARRAY * arr_data)
{
// Code ????
}
لطفا راهنماییم کنید. ممنون