在Windows

时间:2015-12-28 10:35:12

标签: 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);

1 个答案:

答案 0 :(得分:0)

我想,你的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'的所有字符。