我有一个从 VB/Excel 运行并在其中执行 C++ 程序的程序。我有两个(我认为相关的)问题:
我在 C++ 程序执行时捕获了它的返回值,但我得到的数字不是零(而是一个 4 位整数值,我收到的样本值是 8156、5844、6100、5528)。我确定程序以代码 0 正常退出,但我认为 VB 在 C++ 程序完成执行之前获得了它的值 - 这可以解释为什么我没有得到零值,以及我如何获得最终的正确值从我的 C++ 程序返回值?
[可能作为#1 的解决方案] 如何让 VB 程序“暂停”,直到 C++ 模型完成执行?模型完成后,我需要做一些额外的 VB 工作(基于 C++ 模型运行的输出配置)
这是我的模型调用方式的 VB 代码。我正在通过 windows shell 运行一个完整编译的 C++ 程序。
'---------------------------------------------------------
' SECTION III - RUN THE MODEL AS C++ EXECUTABLE
'---------------------------------------------------------
Dim ModelDirectoryPath As String
Dim ModelExecutableName As String
Dim ModelFullString As String
Dim ret As Long
ModelDirectoryPath = Range("ModelFilePath").value
ModelExecutableName = Range("ModelFileName").value
ModelFullString = ModelDirectoryPath & ModelExecutableName
' Call the model to run
Application.StatusBar = "Running C Model..."
ModelFullString = ModelFullString & " " & ScenarioCounter & " " & NumDeals _
& " " & ModelRunTimeStamp
ret = Shell(ModelFullString)
' Add error checking based on return value
' This is where I want to do some checks on the return value and then start more VB code