Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++/CLI
Hi,
I've defined a function for a C++/CLI library:
extern "C"
{
	INT_PTR __cdecl brl_graphics_Graphics(int Width, int Height, int Depth, int Hertz, int Flags);
}
And this is the function that calls it, it's just a wrapper:
IntPtr BlitzMax::BlitzMax::Graphics(int Width, int Height, int Depth, int Hertz, int Flags)
{
	return IntPtr(brl_graphics_Graphics(Width, Height, Depth, Hertz, Flags));
}
When I call it from a C# application I get a AccessViolationException, for some reason in the disassembly it doesn't use cdecl calling convention:
push        dword ptr [ebp+10h] 
push        dword ptr [ebp+0Ch] 
push        dword ptr [ebp+8] 
mov         ecx,dword ptr [ebp-4] 
mov         edx,dword ptr [ebp-8] 
call        FFD595B8 
 
Thanks for helping in advance.
Posted 17-Oct-12 22:20pm
Comments
skydger at 18-Oct-12 3:35am
   
Is it possible, that target systems for your projects differs?
Dávid Kocsis at 18-Oct-12 3:46am
   
For the C++ library it is set to Win32, for the C# it is set to x86. So it is the same as I know.
skydger at 18-Oct-12 4:01am
   
I think I got the issue. Try to refer this book, chapter 9. http://fs1.bib.tiera.ru/content/dvd42/Heege%20M.%20-%20Expert%20C++.CLI.%20.NET%20for%20Visual%20C++%20Programmers(2007)(352).pdf
I think it could be useful.
Dávid Kocsis at 18-Oct-12 4:11am
   
Thanks, I will read it.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Advertise | Privacy | Mobile
Web02 | 2.8.1411022.1 | Last Updated 18 Oct 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100