2015-10-22 189 views
-1

我的Xsteam.dll文件適用於我所有的LABVIEW項目;但現在我想在一個簡單的Visual C++項目中使用它(Xsteam.dll)(在Visual Studio 2013或...)。我只有一個沒有.h和.lib文件的dll文件。如何在vC++中使用它?

我沒有任何其他文件相關(如* .h,* .lib等)。

我知道用c/C++語言編寫的Xsteam.dll,我知道它的所有函數和變量類型的輸入和輸出arg。

我通常在LabVIEW中使用Xsteam.dll在此設置:

library name or path: c:\XSteam.dll   
function name:   h_pT   
thread:    run in UI thread   
calling convention:  stdcall(WINAPI)     
function prototype : double [email protected](double arg1, double arg2);  

return type : Numeric 8-byte double   
arg1:  Numeric 8-byte double Pass: Value    
arg2: Numeric 8-byte double  Pass: Value     

prototype for these procedures: 
           MgErr Proc(InstanceDataPtr *instanceState); 

如何通過簡單的VC++程序中使用Xsteam.dll

+0

請小心檢查該DLL是否與您的C++程序匹配,即不要混合使用32位和64位dll和程序。 – Mikhail

+0

你可以使用這個.dll嗎?然後給我它的代碼?這個簡單的項目對其他人來說非常有用,他們有同樣的問題,而且你的工作非常重要。順便說一句,你的指導很棒。 – nanosi

回答

2
example: 
HMODULE hModule = LoadLibrary("c:\\XSteam.dll"); 
typedef double (* FNPTR) (double , double); 
       FNPTR pfn = (FNPTR)hModule.GetProc("h_pT"); 
       if (NULL != pfn) 
       { 
        double result=pfn(arg1, arg2); 
       } 
+0

非常感謝。但我是初學者,我無法使用它。我應該在VC++的新項目中編寫這些腳本並構建(編譯)它嗎?我做到了,我看到了很多錯誤。 – nanosi

1

您需要製作頭文件並使用dumpbin和lib來創建導入庫(* .lib)。查看herehere

+0

我很難理解鏈接的內容。另外我沒有.h或.lib文件,我只是有一個Xsteam.dll有許多功能。每個功能捕獲兩個輸入數字並給出一個輸出數字。我知道這些功能,我想用其中之一來尋找解決方案。我需要一個簡單的程序來使用它。非常感謝。 – nanosi

+0

首先,你需要製作一個頭文件。既然您已經知道了功能簽名,您可以輕鬆完成,例如'extern「C」__declspec(dllimport)double h_pT(double,double)'。然後,如鏈接中所述,在dll上運行dumpbin以生成.def文件。在.def文件上運行lib以生成.lib文件。最後,在鏈接過程中,您將在程序中使用.lib文件。 – kjpus

+0

我需要更多關於VC++的學習,現在我不能使用這個.dll。你能寫那些使用這個.dll的腳本嗎?謝謝。 – nanosi

相關問題