zDog,
You would want to do this:
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct <StructureName>
{
public short snOperParams;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szNFPath;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szSSFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szExeFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szOpLibIFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szOpLibMFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szDefaultIFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szDefaultMFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szMiscFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szAuxFile;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=PATH_SIZE)]
public string szSuffix;
}
Just make sure that you define <StructureName> and define a constant for
PATH_SIZE.
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
-
mv*@spam.guard.caspershouse.com
"zDog" <zD**@discussions.microsoft.com> wrote in message
news:E3**********************************@microsof t.com...
I found a lot of information on passing data from C# to a C++ dll
What I cannot find is a way to return C++ structs of TCHAR string data
back
to the C# managed code!
typedef struct // C++ data that needs to be returned to the caller (C#)
{
short snOperParams;
TCHAR szNFPath[PATH_SIZE];
TCHAR szSSFile[PATH_SIZE];
TCHAR szExeFile[PATH_SIZE];
TCHAR szOpLibIFile[PATH_SIZE];
TCHAR szOpLibMFile[PATH_SIZE];
TCHAR szDefaultIFile[PATH_SIZE];
TCHAR szDefaultMFile[PATH_SIZE];
TCHAR szMiscFile[PATH_SIZE];
TCHAR szAuxFile[PATH_SIZE];
TCHAR szSuffix[PATH_SIZE];
} files;