Click here to Skip to main content
15,885,546 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi all ,

I have a function in mfc(which is a dll type project) which extracts a zip file and creates folder which ultimately show up the files ,now this is used in C#.Net project so when I call this method from dll in the C#.net project not all files are extracted and shows up the error an AccessViolationExceptions occurs .

I guess this buffer which takes the extracted files there at the .net project is not able to allocate that much amount of memory..
I need advice on it ....

BYTE *buffer;
buffer = new BYTE[oFileData.lActualSize];
if( buffer == 0 )
{
_tcscpy((*_errorText), szFilesFolder.GetBuffer() );
szFilesFolder.ReleaseBuffer();
CoTaskMemFree((*_errorText));

return FAILTOALLMEM;
}

SIGNATURE of the function in mfc :

extern "C" _declspec(dllexport) int extractCompressedFile( TCHAR* _szFilePath, TCHAR* _extractPath, TCHAR** _errorText )


Calling in C#.Net

IntPtr BackupDLL = NativeMethods.LoadLibrary(somepath);
IntPtr procaddr = NativeMethods.GetProcAddress(BackupDLL, "extractCompressedFile");
C_ExtractFiles func = (C_ExtractFiles)Marshal.GetDelegateForFunctionPointer(procaddr,typeof(C_ExtractFiles));
res = func(Program.ptc_SourFilePath, ptc_DestinationFilePath, ref errtext);
Program.strResult = res.ToString();



static class ExtNativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Ansi)]
public static extern IntPtr GetProcAddress(IntPtr hModule, [In][MarshalAsAttribute(UnmanagedType.LPStr)] string procedureName);
}
Posted
Updated 10-Oct-12 0:02am
v4
Comments
Sergey Alexandrovich Kryukov 10-Oct-12 2:50am    
Isn't it obvious that you provide not enough information, by far?!
--SA

1 solution

That is a problem of Marshalling: the .Net data types need some kind of conversion for use in the C++ dll. Hence, show us the signature of the C++ function and your DllImport statement, then we will be able to provide further hints.
 
Share this answer
 
Comments
iampradeepsharma 10-Oct-12 4:30am    
Now I have provided some more information ,may be would help you to guide me in some direction.
Bernhard Hiller 10-Oct-12 5:07am    
And the definition of C_ExtractFiles, please....
Adn why the difference between C_ExtractPxlFiles and C_ExtractFiles?

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



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900