2 Stimmen

Fehler beim Öffnen der simul8-Datei

Ich möchte eine simul8-Datei mit C++ öffnen und habe Folgendes getan

#include "stdafx.h"
#include "windows.h"
#import "C:\Program Files\SIMUL8\S8.exe" named_guids
using namespace SIMUL8;

int _tmain(int argc, _TCHAR* argv[])
{

IS8Simulation* MYSIMUL8 = NULL;
IUnknown* pUnk = NULL;
HRESULT hr = ::CoCreateInstance(SIMUL8::CLSID_S8Simulation,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);
_bstr_t bstrFileName = ::SysAllocString(L"D:\\Demo1.s8");

hr = MYSIMUL8->Open(bstrFileName); 
MYSIMUL8->RunSim(2400);
}

Ich erhalte die Fehlermeldung Unbehandelte Ausnahme bei 0x004017e7 in SimTest.exe: 0xC0000005: Zugriffsverletzung beim Lesen von Speicherplatz 0x00000000. in s8.tli

inline HRESULT IS8Simulation::Open ( _bstr_t FileName ) {
    HRESULT _hr = raw_Open(FileName); ON THIS LINE
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}

Bitte helfen Sie mir, was ich falsch mache

0voto

Reema Jamil Punkte 21

Ich habe das Problem gelöst. Der Fehler war, dass ich das COM-Objekt nicht initialisiert habe. Ich habe den Code wie folgt geändert...

// SimTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#import "C:\Program Files\SIMUL8\S8.exe" named_guids
using namespace SIMUL8;

int _tmain(int argc, _TCHAR* argv[])
{
//Simul8.Simulation8 *pObject;
IS8Simulation * MYSIMUL8;
MYSIMUL8=(struct IS8Simulation *) malloc(sizeof(struct IS8Simulation ));

IUnknown * pUnk ;

CoInitialize( NULL );
HRESULT hr = ::CoCreateInstance(SIMUL8::CLSID_S8Simulation ,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);

hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void**)&MYSIMUL8);

_bstr_t bstrFileName = ::SysAllocString(L"D:\\Demo1.s8");

MYSIMUL8->Open(bstrFileName);
MYSIMUL8->Visible = true;
MYSIMUL8->RunSim(2400);

// Uninitialize COM.
//CoUninitialize();
} 

Jetzt läuft meine Simul8 Demo :-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X