2013-08-30 37 views
2
  1. 我有一个C++程序,的Program.exe具有功能的doSomething()
  2. 代替的Program.exe具有逻辑调用doSomething的(),我需要但excel是决定何时调用这个doSomething()的前端 - 基于特定单元格的一些变化
  3. XML/CSV IO因为决策制定是实时的,低延迟
  4. 所以我该如何去关于excel与program.exe的接口,以便excel调用doSomething()

我确实希望有人能指出我的方向。我使用QT 4.8.5来开发C++项目。 我一直在阅读,但COM模型是非常新的我..我写一个COM模型? DLL?Excel中调用C的函数++程序

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

+1

您正在使用Excel的实时应用程序? –

+0

是的..它是实时的 – mecher

回答

0

您可以从Excel中调用DLL函数。 因此,您有两种可能性:

  • 将您的程序转换为DLL。
  • 如果这是不可能的,建立与程序通信(在一些IPC机制,如插座为例)

对于细节的DLL,搜索网页或再次询问:-)

会如何COM/DLL“知道” Excel有调用它,从而 提供某种形式的“确认”并依次调用 DoSomething的()中的Program.exe

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

1

一种方法是创建一个包含你的函数doSomething一个DLL和MSDN文章中描述了从Excel中调用它:How to: Access DLLs in Excel

你也可以做一个COM组件,您的应用程序中。从Excel中访问会更容易一些(特别是涉及到参数类型时),但是如果你从来没有做过(而且你只需要调用一个函数),那么试试“纯粹的DLL” “ - 先做。

0

PE文件(.exe)不会导出函数。然而,你可以用excel和参数来执行你的程序并使用结果(从程序读入stdout到excel中)。

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