Excel调用C ++程序的函数

时间:2013-08-30 18:31:37

标签: c++ excel

  1. 我有一个C ++程序,program.exe,它有一个函数doSomething()
  2. 但是我没有在program.exe中使用逻辑调用doSomething(),而是需要excel作为前端来决定何时调用这个doSomething() - 基于特定单元格中的某些更改
  3. XML / CSV IO已经淘汰,因为决策是实时的,低延迟的
  4. 那么我该怎样进行excel与program.exe的接口,以便excel调用doSomething()
  5. 我希望有人能指出我的方向。我使用QT 4.8.5开发c ++项目。 我一直在阅读,但COM模型对我来说很新。我是否写了一个COM模型? DLL?

    COM / DLL如何“知道”excel已经调用它,从而提供某种“确认”,然后调用program.exe中的doSomething()?

4 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是创建包含函数doSomething的DLL,并按照此MSDN文章中所述从Excel调用它:How to: Access DLLs in Excel

您还可以从应用程序中创建COM组件。这样从Excel中访问会更容易一些(特别是涉及到参数类型时),但是如果你从未这样做过(你只需要调用一个函数),那么尝试“pure-DLL”可能会更好一些。 “ - 首先接受。

答案 1 :(得分:0)

您可以从excel调用DLL函数。 有了这个,你有两种可能性:

  • 将程序转换为DLL。
  • 如果那不可能,请创建一个与您的程序通信的DLL(通过一些IPC机制,例如套接字)

有关详情,请搜索网页或再次询问: - )

  

COM / DLL如何“知道”excel已经调用它,因此   提供某种“确认”,然后调用   program.exe中的doSomething()

Excel不会调用DLL,它会调用DLL中的函数(通过从VBA宏或电子表格公式调用它)。当这个函数执行时,它必须被某些东西调用(可能是Excel,除非你从其他地方调用它),所以它“知道”它已被调用。它可以通过它的回报价值提供反馈。

答案 2 :(得分:0)

PE文件(.exe)不导出函数。但是,您可以使用参数从excel执行程序并使用结果(将程序中的stdout读入excel)。

您可以使用宏来执行程序。但是,我拒绝编写Visual Basic(或者就此问题阅读它),所以很遗憾我无法提供任何示例代码。如果你搜索一下,它应该很容易获得。

答案 3 :(得分:0)

anyw ..我最终找到了一个我能理解的例子http://qt-project.org/doc/qt-4.8/activeqt-comapp.html

最终的VBA代码可以很容易地整合到Excel-vba中,而QT提供了一个简单易用的代码?在现有代码上编写COM包装器的方法