using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace PatternSequencer
{
class Version
{
public string majorVersion;
public string minorVersion;
ushort* pmajorVersion;
ushort* pminorVersion;
ulong status;
[DllImport(@"c:\DOcuments\Myapp.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SRX_DllVersion")]
public static extern ulong SRX_DllVersion(ushort* pmajorVersion, ushort* pminorVersion);
public Version()
{
status = SRX_DllVersion(&pmajorVersion, &pminorVersion);
if (status)
{
majorVersion = "1 - " + *pmajorVersion;
minorVersion = "1 - " + *pminorVersion;
}
else
{
majorVersion = "0 - " + *pmajorVersion;
minorVersion = "0 - " + *pminorVersion;
}
}
}
}
Viene generato un puntatore di errore e buffer di dimensioni fisse possono essere utilizzati solo in un contesto non sicuro. Come posso passare i puntatori alla DLL C++? Sono nuovo di C#, ti prego, aiutamiCome accedere a una funzione C++ che prende i puntatori come argomento di input da un C#
Dichiarare i parametri come 'ref', che eliminerà la necessità di codice' non sicuro'. – William
@William: puoi spiegarlo in dettaglio. Sono nuovo di C# – user2495173
Quello che vuoi fare qui è noto come [Marshalling] (http://msdn.microsoft.com/en-us/magazine/cc164193.aspx). È un argomento importante, ma per casi semplici come questo, non è troppo difficile. –