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