gpt4 book ai didi

从 VBA 代码调用 OCaml 或 C 的可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:57 25 4
gpt4 key购买 nike

Ubuntu 下,我用 OCaml 编写了一个非常简单的 ml.ml:

let () = print_string "hello world, in OCaml\n"

还有一个简单的 c.cC:

#include <stdio.h>
main() {
printf("hello world, in C\n");
return 0; }

然后我通过ocamlc -o mlexe.exe ml.mlgcc -o cexe.exe c.c编译了它。在 Ubuntu 的终端下启动 mlexe.execexe.exe 会返回字符串。

现在我想从 VBA 代码中调用它。我启动 Windows,打开 Microsoft Excel 文件和 VBA 编辑器,然后输入:

Sub run()
Dim ProcID As Integer
ProcID = Shell("C:\Windows\system32\calc.exe", 1)

Dim Result As Variant
Result = Shell("C:\test\cexe.exe",1)
'Result = Shell("C:\test\mlexe.exe",1)
'Result = Shell("C:\test\cexe.exe")
'Result = Shell("C:\test\mlexe.exe")
End Sub

我希望 Result 得到字符串 hello world...(或者在不太好的情况下是退出代码),运行宏确实会启动计算器,但是给我一个错误 Run-time error '5': Invalid procedure call or argument,对于其他 4 个 Shell 和我自己的可执行文件。

目的只是从VBA代码中调用自己用另一种语言编译的可执行文件。

谁能告诉我哪里出了问题?

最佳答案

感谢您在评论中的回答。所以问题似乎是你有一个在Ubuntu下编译的可执行文件,它在Windows下被调用。Windows 可执行文件和 Linux 可执行文件不同,不能相互替代。

解决您问题的最简单方法是在 Windows 下安装一个编译器,用它编译您的代码,从而获得一个 Windows 二进制文件。对于 OCaml,参见例如 http://protz.github.com/ocaml-installer/ .

另一种方法是交叉编译,即在 Linux 下编译,但明确要求编译器生成 Windows 可执行文件。这更难。

关于从 VBA 代码调用 OCaml 或 C 的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com