Excel调用C++程序的函数
Excel calling a function of a C++ program
- 我有一个C++程序,program.exe,它有一个函数doSomething()
- 但是,我不需要在program.exe中有一个调用doSomething()的逻辑,而是需要excel作为前端,根据特定单元格中的一些变化来决定何时调用这个doSometing()
- XML/CSV IO已过时,因为决策是实时的、低延迟的
- 那么,我该如何将excel与program.exe接口,以便excel调用doSomething()
我真的希望有人能给我指明方向。我使用QT 4.8.5来开发c++项目。我一直在读,但COM模型对我来说是很新的。我写COM模型吗?DLL?
COM/DLL如何"知道"excel调用了它,从而提供某种"确认",进而调用program.exe中的doSomething()?
一种方法是创建一个包含函数doSomething
的DLL,并从Excel中调用它,如MSDN文章中所述:如何:访问Excel 中的DLL
您还可以从应用程序中生成COM组件。这将更容易从Excel访问(尤其是当涉及到参数类型时),但如果你从未这样做过(并且你只需要调用一个函数),最好先尝试"纯DLL"方法。
您可以从excel中调用DLL函数。这样,你就有两种可能性:
- 将程序转换为DLL
- 如果这不可能,请创建一个与程序通信的DLL(通过一些IPC机制,例如套接字)
有关详细信息,请搜索Web或再次询问:-)
COM/DLL如何"知道"excel调用了它,从而提供某种"确认",然后调用program.exe 中的doSomething()
Excel不调用DLL,而是调用DLL中的函数(通过从VBA宏或电子表格公式调用它)。当这个函数执行时,它一定是被某种东西调用的(可能是Excel,除非你从其他地方调用它),所以它有点"知道"它被调用了。它可以通过其回报值向excel提供反馈。
PE文件(.exe)不导出函数。但是,您可以使用参数从excel执行程序并使用结果(将程序的stdout读取到excel中)。
您可以使用宏来执行程序。然而,我拒绝编写Visual Basic(或阅读它),因此不幸的是,我无法提供任何示例代码。如果你四处搜索一下,它应该很容易找到。
anyw。。我最终找到了一个我能理解的例子http://qt-project.org/doc/qt-4.8/activeqt-comapp.html
最终的VBA代码可以很容易地合并到Excel VBA中,QT提供了一个?容易的在我现有的代码上编写COM包装器的方法
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在C应用程序中运行C++(带有STL)函数
- 如何在c++程序中找到函数的地址
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 具有外部"c"和程序集的未定义函数
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 程序不会执行函数 c++
- C++调用具有 *this 属性的单个帮助程序函数
- 用于检查值是否为其任何参数的帮助程序函数
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 程序不向函数返回值
- C++ 函数程序中的平均输出始终为 0.0
- 使用getline和字符串函数C++程序中的分段错误
- 如何理解哪个递归函数程序需要
- 3 函数加主函数 C 程序计算和显示阶乘
- 在结构中嵌入函数程序集代码
- c++的构造函数和析构函数程序集
- c++基本函数程序编译时不会出现满屏幕的错误