如何在Visual D中编写示例COM服务器

时间:2013-11-04 10:25:35

标签: com d

我很难在Visual D 2010中运行一个简单的COM服务器。这些是我到目前为止所做的步骤:

  1. 清理动态库(DLL)类型的Visual D 2010解决方案
  2. 我已将dserver.d内容复制到dllmain.d
  3. 我已将文件chello.ddserver.def复制到解决方案的源文件夹中,以及<D install dir>\dmd2\windows\lib中的advapi32.lib和ole32.lib。
  4. 我已通过右键单击解决方案资源管理器中的项目并添加 - >现有项目...
  5. 将已复制的文件添加到解决方案中
  6. 将文件dserver.def重命名为dll.def,覆盖现有项目的文件。
  7. 根据this forum thread
  8. 上的说明,将修补程序应用于chello.ddllmain.d(原dserver.d
  9. 构建调试。没错。
  10. 调用regsvr32 COMServer.dll会返回以下四个消息框:
  11. enter image description here

    然后

    enter image description here

    然后

    enter image description here

    最后

    enter image description here

    我仍然无法从VBA访问COM对象。并直接引用DLL(通过Browse ...按钮并指向COMServer.dll)失败,并显示“无法添加对指定文件的引用。”

2 个答案:

答案 0 :(得分:1)

我再看一下论坛,样本的问题似乎与Windows XP上的TLS有关。我在这里发布了一个(有点hacky)解决方案:

http://forum.dlang.org/thread/mqoxluonyjdtjxauaxnl@forum.dlang.org?page=2

答案 1 :(得分:0)

我无法为您提供有效的答案。看起来这是一年前,我试图找到一个使用COM server工作的例子。这使用Juno(不准备64位),与Visual D无关,最重要的是我无法工作。我遇到的问题与注册服务器有关(“并排配置不正确”)。

我对COM的资格都在Juno的历史中(所以没有太多)。如果你对COM更熟悉,你可能会更进一步,如果它没有编译为最新的DMD让我知道(2.064还没有出来)。