打开simul8文件时出现错误

Getting Error on opening simul8 file

本文关键字:错误 simul8 文件 打开      更新时间:2023-10-16

我想使用c++打开simul8文件,我已经做了以下操作

#include "stdafx.h"
#include "windows.h"
#import "C:Program FilesSIMUL8S8.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);
}

我得到错误消息在SimTest.exe中的0x004017e7未处理异常:0xC0000005:访问违规读取位置0x00000000。在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;
}

请告诉我我做错了什么

我已经解决了这个问题。错误是我没有初始化COM对象,我已经修改了代码如下…

// SimTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#import "C:Program FilesSIMUL8S8.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();
} 

现在我的Simul8 Demo正在运行:-)