所以,我有两个应用程序,一个用C ++编译,另一个用C. 主要的C应用程序无法使用Windows中的system()函数启动另一个应用程序。我收到一个错误消息框,说"没有找到入口点"。问题是,从命令提示符运行时,另一个应用程序工作正常。有没有人遇到类似的东西?
编辑: - 对于那些问过的人:) 好吧,应用程序在另一个目录中,它将bmp转换为png,它有两个参数..首先我创建一个像这样的新字符串
sprintf(converterExec, "%s\\converter.exe \"%s\" \"%s\"", newDir, bmpLoc, pngLoc);
newDir =程序的目录 bmpLoc,pngLoc =两个源文件和目标文件的位置
当我调试程序时,converterExec
包含带有两个参数的程序的绝对路径,因此没有错误。
然后我称之为:
system(converterExec);
答案 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'
的所有字符。