Re: Как маршалить unsigned long* ?
От: Аноним  
Дата: 17.09.10 08:57
Оценка:
Здравствуйте, dims12, Вы писали:

D>Плиз проверьте, правильно ли я делаю:


D>
D>[DllImport(..., EntryPoint = "#48", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
D>        unsafe internal static extern Int32 GetText(UInt32* handle, string In, StringBuilder Out, ref UInt32 Len, UInt32 smth);
D>



D>
D>long _cdecl GetTextr(unsigned long *handle, const char* lpszWord,  char* ,  unsigned long*, unsigned long ); 
D>


D>То есть, могу ли я по-разному маршалить (unsigned long *)? В первом случае у меня там хендл, а во втором случае фоункция туда значение закладывает. Или нужно всегда маршалить как указатель?


маршалить можно так как удобно для данного параметра: unsafe и указатель, ref/out, IntPtr, массив и т.д. Из-за того, что разные параметры маршалируются по разному ошибок не будет.

D>Ошибка возникает праямо в момент ассемблерной инструкции call. Может быть проблема в _cdecl?


Calling convention совпадает, так что, тут ошибки тоже нет.

D>Или, может, энтри поинт неправильно указан?


Если нет уверенности, то, разумеется, надо, в первую очередь, проверить правильность EntryPoint.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.