c # — Ошибка TlbImp TI1036 не удалось импортировать SAFEARRAY (float)

У меня есть idl, который содержит простое определение интерфейса:

library DecoToniCfgLib
{

importlib("stdole32.tlb");

//....code
//....code

[
object,
uuid(A6F30650-53F5-4688-829A-C084BA1C7DC0),
dual,
nonextensible,
helpstring("DecoToniConfig Interface"),
pointer_default(unique)
]
interface IDecoToniConfig : IDispatch
{
[id(1), helpstring("Opens the Tones config and returns the params")]
HRESULT OpenToneConfigWindow([out, retval] TCodecParams* pVal);
[id(2), helpstring("Opens the Tones config and returns the params in an array form")]
HRESULT OpenToneConfigWindowArray([out, retval] SAFEARRAY(float)* pVal);
[id(3), helpstring("Opens the masks config window")]
HRESULT OpenMaskConfigWindow([out, retval] SAFEARRAY(TMask)* pVal);
};

}

Я добавляю к нему метод, который возвращает SAFEARRAY (float), но когда я запускаю TlbImp для создания библиотеки импорта для управляемого кода, я получаю:

TlbImp : error TI1036 : Cannot find 'System.Single[] OpenToneConfigWindowArray()'
in 'DecoToniCfgLib.IDecoToniConfig' when implementing 'DecoToniCfgLib.IDecoToniConfig'
in 'interop.DecoToniConfigLib.DecoToniConfigClass'
from 'interop.DecoToniConfigLib, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null'.

Где может быть проблема?
Может быть, я должен что-то ссылаться? Если так … как я могу это сделать?

С уважением.

0

Решение

Когда я бегу

tlbimp.exe DecoToniConfigLib.dll /out:interop.DecoToniConfigLib.dll

Он создает два файла: DecoToniCfgLib.dll (библиотека, определенная в IDL) и interop.DecoToniConfigLib.dll

Комментарий @ hans-passant зажигает лампу в моей голове, и я удаляю эти два файла перед тем, как снова запустить tlbimp … и это работает.

0

Другие решения


По вопросам рекламы [email protected]