最近要使用C++去调用由java编写好了的一个模块,之前没接触过CC++,就Google了好久,虽然找到了C/C++调用java的方法,自己试着写了一个Demo也成功了,但是当去调用我的那个已经做好的模块的时候,不知道哪里抽风了,就是通不过,我那个郁闷啊!

所以就想另辟新径,将已经写好的java模块打包为可执行exe文件,然后让C/C++去调用这个可执行程序!这样就不会出现问题了!

说整就整,又是Google了N久,找到了一个JSmooth将可执行jar包编译成可执行exe文件的软件,通过这个确实实现了可执行程序!

言归正传,今天我们这里不讨论JSmooth可以自己google
只说C/C++代码调用exe文件,并传递参数:我这里是参考了sharep 的BLOG这位仁兄的一篇教程(他这里介绍了几种方法的主要使用方式),使用了其中的ShellExecute方法,测试通过!

#include "windows.h"
#include "shellapi.h"
#include <iostream>

using namespace std;

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
    //::ShellExecute(NULL, "open", "OfficeToPDF.exe", "F:\myfile\test.ppt F:\myfile\test.pdf", NULL, SW_SHOW);     
    ShellExecute(
        NULL,            //父窗口句柄
        "open",            //操作, 打开方式 "edit","explore","open","find","print","NULL"
        "OfficeToPDF.exe",    //文件名,前面可加路径
        "参数1 参数2 参数3",    //参数 可以多个参数用空格隔开
        NULL,            //默认文件夹
        SW_SHOWNORMAL        //显示方式
        );
    return 0;
}

刚开始在使用的编码的过程中,由于对C/C++不是很了解,没有使用系统的Mian方法,所以,一定要使用int WINAPI WinMain()这个方法!