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