c++ - 在 Windows 中执行 system() 时未找到入口点

标签 c++ c

所以,我有两个应用程序,一个用 C++ 编译,另一个用 C 编译。 主 C 应用程序无法在 Windows 中使用 system() 函数启动另一个应用程序。我收到一条错误消息框,显示“未找到入口点”。问题是,从命令提示符运行时另一个应用程序运行良好。有人遇到过类似的事情吗?

编辑: - 对于那些提问的人:) 好吧,应用程序位于另一个目录中,它将 bmp 转换为 png,它有两个参数。首先,我创建一个像这样的新字符串

sprintf(converterExec, "%s\\converter.exe \"%s\" \"%s\"", newDir, bmpLoc, pngLoc);

newDir = 程序的目录 bmpLoc、pngLoc = 两个文件(源文件和目标文件)的位置

当我调试程序时,converterExec包含带有两个参数的程序的绝对路径,因此没有错误。

然后我称之为:

system(converterExec);

最佳答案

我想,您的 converter.exe 存在问题(也许,它应该使用静态链接进行编译)。

尝试其他程序,例如:

#include <stdio.h> 
#include <windows.h> 

int main(void) 
{ 
    char commandLine[256];
    char progName[] = "ping";
    char hostName[] = "localhost";
    char keys[] = "-n 2";
    sprintf(commandLine, "%s \"%s\" %s", progName, hostName, keys);
    printf("%s\n", commandLine);
    system(commandLine);
} 

如果有效,请再次尝试您的命令,但在开头添加 cmd/c:

 sprintf(converterExec, "cmd /c %s\\converter.exe \"%s\" \"%s\"", newDir, bmpLoc, pngLoc);

还要检查分配给 converterExec 的内存是否足以存储末尾带有附加 '\0' 的所有字符。

关于c++ - 在 Windows 中执行 system() 时未找到入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491891/

相关文章:

c++ - 从变换范围构造新容器

c++ - tex1Dfetch 意外返回 0

c - 通过引用调用的行为

c - Linux 系统调用 clock_settime(...) 在 Docker 容器中因 EPERM 失败

c++ - 在源文件中包含类而不是 header

c++ - 为什么不允许使用 `make_unique<T[N]>`?

c++ - 如何正确编写模板模板参数?

c - 重定向标准输出

c - L值到R值的转换

java - 在 Java 中拆分数组单元格