在C ++中导入dll函数

时间:2019-07-13 15:17:10

标签: c++ c function dll import

我有一个名为swedll32.dll的Dll文件,该文件用于天文计算。 我已经在C#中导入了这些函数并正在使用它们。 但是在c ++中,我尝试了所有可能的方法来导入这些函数,但是它不起作用。

可以请别人演示如何导入具有给定名称的函数吗?

int swe_calc_ut(double tjd_ut,int ipl,int iflag,double* xx,char* serr), 哪里 tjd_ut =世界时间朱利安日 ipl =身体编号 iflag =一个32位整数,包含指示需要哪种计算的位标志。

xx =经度,纬度,距离,长速度,纬度速度和dist速度的6个双精度数组。

serr [256] =用于在出现错误的情况下返回错误消息的字符串。

1 个答案:

答案 0 :(得分:2)

尽管下面的内容仍然有效,但此stack overflow answer也可能会有所帮助。

article包含从DLL导入函数的示例,但要旨是:

int CallMyDLL(void){ 

  /* get handle to dll */ 
 HINSTANCE hGetProcIDDLL = LoadLibrary("C:\\MyDLL.dll"); 

 /* get pointer to the function in the dll*/ 
 FARPROC lpfnGetProcessID = GetProcAddress(HMODULE (hGetProcIDDLL),"MyFunction"); 

 /* 
  Define the Function in the DLL for reuse. This is just prototyping the dll's 
  function. 
  A mock of it. Use "stdcall" for maximum compatibility. 
 */ 
 typedef int (__stdcall * pICFUNC)(char *, int); 

 pICFUNC MyFunction; 
 MyFunction = pICFUNC(lpfnGetProcessID); 

 /* The actual call to the function contained in the dll */ 
 char s[]= "hello";
 int intMyReturnVal = MyFunction(s, 5); 

 /* Release the Dll */ 
 FreeLibrary(hGetProcIDDLL); 

 /* The return val from the dll */ 
  return intMyReturnVal; 
}