windows – 从没有CGo的Go调用COM对象方法
我在Go中创建了一个
Direct3D9 wrapper,它使用CGo与C中的COM对象进行交互.
我想摆脱Windows下对C编译器的依赖,这样用户就不必安装MinGW或Cygwin来使用Go的DirectX. 问题是d3d9.dll不暴露C函数但使用COM.加载DLL后可以直接调用的唯一函数(带有syscall.LoadLibrary(“d3d9.dll”))是Direct3DCreate9.这将返回一个COM对象,该对象将所有功能公开为方法. 如何在没有CGo的纯Go中调用DLL中的COM对象方法? 我知道Go-OLE库,它声称它没有CGo调用COM接口,但我不能从源头看到我将如何为Direct3D9做同样的事情.只有相关部分的简单示例将会有很大帮助. 解决方法
(不是一个全面的答案,因为我没有时间对此进行实际测试,但仍然……)
虽然MSDN大多数时候都假设您使用某些具有内置“粘合剂”的平台(例如Visual C?产品或类似的东西)来处理COM对象,但实际上可以使用普通的COM对象. C-look here和here首发. 研究这些资源,您可以了解到在“COM接口”上调用方法相当于正确使用其“VTBL”(虚函数TaBLe)块,该块始终位于相对于由“接口”伪装的指针的众所周知的位置.实例化COM对象的函数返回的“thing”. go-ole包在普通的Go中实现了你在普通C中所做的事情,所以凭借“调用我们需要在其VTBL上操作的COM对象上的方法”的知识,我们可以在其中找到 我还要直接进入go-ole问题跟踪器,要求实现一段示例代码,该代码将演示如何调用COM对象的处理程序上的方法,而不是通过调用go-ole包中的函数来获取. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 域控制器 – Windows Server 2008 R2功能级别 –
- windows – 什么是装载机锁?
- 如何使用毫秒分辨率获得Windows系统时间?
- Shared Event-loop for Same-Origin Windows(译)
- MS会在.Net 4. *或5. *中放弃对XP的支持吗?
- 自己托管的信号器是否需要Windows Server 2012才
- Chromium的Microsoft Edge预测版重在基本功能
- How to check windows system up-running time
- .net – 如何在WPF中使用DrawThemeTextEx
- 我正在寻找适用于Windows的Python 2.7的gevent