In meinem System muss ich MQIC.DLL (IBM WebSphere MQ) laden, um Nachrichten an einen MQ-Server zu senden und abzurufen.Importieren Sie MQIC.DLL in C#
Momentan läuft dieser Dienst in VB5, und ich muss auf .Net aktualisieren. Wenn ich versuche, diese Bibliothek zu laden, erhalte ich den Fehler:
Versuch, geschützten Speicher zu lesen oder zu schreiben. Dies ist oft ein Hinweis darauf, dass anderer Speicher beschädigt ist.
Der Code:
[DllImport("MQIC.DLL", EntryPoint = "[email protected]", SetLastError = true)]
public static extern void MQCONN(string QMgrName, long Hconn, long CompCode, long Reason);
Hat jemand Ahnung, warum es passiert?
Der VB5 Code:
Declare Sub MQCONN Lib "MQIC.DLL" Alias "[email protected]" (ByVal QMgrName As String, Hconn As Long, CompCode As Long, Reason As Long)
Dies ist MQOD Struktur:
public struct MQOD
{
public String StrucId; //Structure identifier'
public long Version; //Structure version number'
public long ObjectType; //Object type'
public string ObjectName; //Object name'
public string ObjectQMgrName; //Object queue manager name'
public string DynamicQName; //Dynamic queue name'
public string AlternateUserId; //Alternate user identifier'
}
Vielleicht zeigen Sie die funktionierende VB5 Declare-Anweisung oder den nativen Export-Prototyp. –
Ich habe einen Kommentar mit dem Code in VB5 hinzugefügt. Tks. –
@CarlosHenriqueBiazinEsteves - (* hier fortgesetzt *) Also ist die 'vb5'-App der Client in einem Client-Server (' C++ 'app) Setup, wo der Client auch mit MQIC.DLL kommuniziert. Ob Sie die Server-App ändern müssen, hängt davon ab, wie die Kommunikation zwischen diesen beiden kommuniziert und was kommuniziert wird. Wenn keine der MQIC.DLL-Strukturen zurück/her gesendet wird, müssen Sie sich keine Gedanken darüber machen. Wenn Sie diese Strukturen hin und her senden, müssen Sie überprüfen, ob sie auf die gleiche Weise im .net-Port gespeichert sind, vielleicht auch nicht, um die Sie sich kümmern müssen. – Igor