내 시스템에서는 MQIC.DLL (IBM WebSphere MQ)을로드하여 MQ 서버로 메시지를 보내고 가져와야합니다.C에서 MQIC.DLL 가져 오기
현재이 서비스는 VB5에서 실행 중이므로 .Net으로 업그레이드해야합니다. 이 라이브러리를로드하려고하면 오류가 발생합니다.
보호 된 메모리를 읽거나 쓰려고 시도했습니다. 이것은 종종 다른 메모리가 손상되었다는 표시입니다.
코드 :이 일어나는 이유
[DllImport("MQIC.DLL", EntryPoint = "[email protected]", SetLastError = true)]
public static extern void MQCONN(string QMgrName, long Hconn, long CompCode, long Reason);
아무도 생각이 있습니까?
VB5 코드 :
Declare Sub MQCONN Lib "MQIC.DLL" Alias "[email protected]" (ByVal QMgrName As String, Hconn As Long, CompCode As Long, Reason As Long)
이것은 MQOD 구조체 :
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'
}
아마도 VB5 Declare 문이나 네이티브 내보내기 프로토 타입을 보여줄 것입니다. –
VB5 코드에 주석을 추가했습니다. Tks. –
@CarlosHenriqueBiazinEsteves - (* 여기 계속) *'vb5' 앱은 클라이언트가 MQIC.DLL과 통신하는 클라이언트 서버 ('C++'app) 설정의 클라이언트입니다. 서버 응용 프로그램을 변경해야하는 경우이 두 서버와 통신되는 서버간에 통신이 어떻게 이루어지는 지에 따라 달라집니다. 'MQIC.DLL' 구조체 중 어느 것도 앞뒤로 보내지 않는다면 걱정할 필요가 없습니다. 이러한 구조를 앞뒤로 보내면 .net 포트에서 동일한 방식으로 유지되는지 확인해야하며 걱정할 필요가 없습니다. – Igor