2013-06-28 130 views
0

我必須創建dll,它將接受參數,然後使用這些參數調用exe。如何創建dll接受參數

一些代碼如下

 
// exportimage.cpp : Defines the entry point for the DLL application. 
// 

#include "stdafx.h" 
#include <stdio.h>  
#include <stdlib.h> 


#ifdef _MANAGED 
#pragma managed(push, off) 
#endif 

BOOL APIENTRY DllMain(HMODULE hModule, 
         DWORD ul_reason_for_call, 
         LPVOID lpReserved 
        ) 
{ 

    int retCode = system("C:\\Inetpub\\wwwroot\\exporter\\res\\applet\\phantomjs.exe" 
    " C:\\Inetpub\\wwwroot\\exporter\\res\\include\\highcharts-convert.js -infile" 
    " C:\\Inetpub\\wwwroot\\exporter\\res\\graphs\\SVGData_137240462725.svg -outfile" 
    " C:\\Inetpub\\wwwroot\\exporter\\res\\graphs\\Image_Export_137240462725.png" 
    " -scale 2.5 -width 1088"); 
    return TRUE; 
} 

#ifdef _MANAGED 
#pragma managed(pop) 
#endif 


現在,在這個我想取路徑以下參數
1)出口
2)的.svgfile
3名)PNG文件的名稱

我會通過html表單將這些參數傳遞給這個dll。所以請告訴我這將需要什麼變化 對於上面的代碼,當我使用它的時候e給SVG文件的作品,但我的瀏覽器得到掛起,所以也請告訴我這是什麼錯誤,如返回另一個這樣的等。

我創建這個C++文件的VC++,我很新的C + +。

回答

1

將實際代碼放入導出的函數中,而不是放在DllMain()中。您可以爲該導出的函數提供您想要的任何原型。

+0

感謝您的回覆,但請您提供一些確切的代碼,以便我將提交包含代碼的表單和dll函數,以執行exe將調用 –

+1

@ user571616由於所有應有的尊重,StackOverflow不是代碼編寫服務。請嘗試自己做,然後如果您遇到問題,請提出具體的問題。 –

1

您必須使用入口點。

__declspec(dllexport) 
void foo(const char* path, const char* svgfile, const char* pngfile) { 
    // do something 
} 

您不能在DllMain中添加這樣的代碼。

+0

但是當我提交html表單時,foo會如何調用這個函數。我應該刪除DllMain還是其他任何東西 –

+0

在這種情況下,您不需要添加DllMain。 DllMain是特別保留的部分。所以你必須創建你的函數入口點。 – mattn

+0

順便說一句,你是什麼意思'HTML窗體'?你想在哪裏使用這個DLL? – mattn

相關問題