Вызов метода COM возвращает катастрофический сбой - PullRequest
1 голос
/ 21 марта 2009

Примечание:

  • Pass BSTR переменная для COM метод, HRESULT возврат 8000FFFF
  • Предыдущие вызовы с указателем интерфейса , успешно : HRESULT 0
  • Выполнение внутри Visual Studio успешно , снаружи с ошибками - выпуск и отладка

Иллюстрация:

const char *simFile;
simFile = new char;
//omitted
_bstr_t simFileToOpen(simFile);
BSTR raw_sim_Open = simFileToOpen.copy();
SysFreeString(simFileToOpen);
delete simFile;

hresult = pis8->raw_Open (raw_sim_Open); //0x8000FFFF returned

1 Ответ

4 голосов
/ 21 марта 2009

simFile выглядит как отдельный символ, хранящийся внутри константного символа *.

Это не строка с нулевым символом в конце, если только она не является пустой строкой и ее содержимое равно 0 Вы уверены, что не хотели делать что-то вроде:

const char *simFile = new char[1024];
strcpy(simFile, "path");

Еще лучше, но вы можете просто использовать SysAllocString, чтобы получить BSTR напрямую.

BSTR str = SysAllocString(_T("path"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...