Я немного застрял с динамическими виртуальными каналами в Delphi - PullRequest
1 голос
/ 29 марта 2019

Я нахожусь в процессе преобразования кода для Динамических Виртуальных Каналов в RDS (или Терминальные службы) из C ++ в Delphi на основе https://github.com/earthquake/UniversalDVC/tree/master/UDVC-Plugin в C ++.Это требует нескольких классов для регистрации клиентского плагина, и я нашел определения в tsvirtualchannels.h и .idl в моей системе Windows в C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um.

К сожалению, файл .idl не содержит библиотеку типов, поэтому я не смог создать файл библиотеки .tlb библиотеки типов и импортировать его, поэтому я воссоздал его вручную в Delphi.

Embarcadero использует файл .ridl, похожий, но не совсем такой же, как файлы idl.Одним из атрибутов в файле .idl является cpp_quote("string").Например,

cpp_quote("EXTERN_C __declspec(selectany) const IID IID_IWTSListenerCallback = {0xA1230203, 0xd6a7, 0x11d8, {0xb9, 0xfd, 0x00, 0x0b, 0xdb, 0xd1, 0xf1, 0x98}};")
[
object,
uuid(A1230203-d6a7-11d8-b9fd-000bdbd1f198),
oleautomation,
helpstring("interface IWTSListenerCallback")

]
interface IWTSListenerCallback : IUnknown    

Ridl не поддерживает cpp_quote, поэтому я не уверен, как с этим справиться.

1 Ответ

1 голос
/ 02 апреля 2019

midl.exe (из Windows SDK) должен иметь возможность генерировать tlb из файла idl.

Если в файле idl нет определения библиотеки, вы можете добавить его самостоятельно, как объяснил Ханс Пассант в своем ответе на этот вопрос .

...