我有一个名为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] =用于在出现错误的情况下返回错误消息的字符串。
答案 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;
}