所以,我有两个应用程序,一个用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'

07-24 09:52