Click here to Skip to main content
12,072,392 members (53,832 online)
Rate this:
 
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 18-Oct-12 3:35am
   
Is it possible, that target systems for your projects differs?
Dávid Kocsis 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 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 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)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Mobile
Web04 | 2.8.160208.1 | Last Updated 18 Oct 2012
Copyright © CodeProject, 1999-2016
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