怎么调用函数
答案:2 悬赏:0
解决时间 2021-03-17 11:51
- 提问者网友:神仙爷爷
- 2021-03-17 06:37
用LoadLibrary加载DLL模块,然后用GetProcAddress取得函数地址,如果我不同时候需要在刚才加载的那个DLL模块中取得不同的函数,那么预先声明函数原型(函数指针)肯定行不同的,因为我不可能知道什么时候将要从DLL模块中取得的函数会是什么样子的,而是在实际应用中去确定,就是说我只是取得了函数地址,然后怎么为这个函数传递参数,然后有怎么去调用这个函数?(记住哦,不是预先声明函数原型“函数指针”然后再来调用)各为帮帮忙,满意者还会加分!!!!!!!!
最佳答案
- 二级知识专家网友:心痛成瘾
- 2021-03-17 07:26
[DllImport(@"ccc.dll", EntryPoint = "single_putin", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public extern static void single_putin();
晕 那你就改你的dll 把你要输出的以返回值的形式返回,在C#中得到值赋给你的字符串
C++类似下面的代码 返回char *
#define LIBEXPORT_API extern "C" __declspec(dllexport)
char szBuffer[1024];
LIBEXPORT_API const char* WinLock()
{
CSystemInfo sys;
CString strTemp;
sys.GetLogonUser(strTemp);
sprintf(szBuffer,"%s",strTemp);
return szBuffer;
}
C#调用
[DllImport(@"*.dll", EntryPoint = "WinLock", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public extern static string WinLock();
希望对你有帮助
public extern static void single_putin();
晕 那你就改你的dll 把你要输出的以返回值的形式返回,在C#中得到值赋给你的字符串
C++类似下面的代码 返回char *
#define LIBEXPORT_API extern "C" __declspec(dllexport)
char szBuffer[1024];
LIBEXPORT_API const char* WinLock()
{
CSystemInfo sys;
CString strTemp;
sys.GetLogonUser(strTemp);
sprintf(szBuffer,"%s",strTemp);
return szBuffer;
}
C#调用
[DllImport(@"*.dll", EntryPoint = "WinLock", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public extern static string WinLock();
希望对你有帮助
全部回答
- 1楼网友:一身浪痞味
- 2021-03-17 08:38
#include
using namespace std;
class a
{
public:
static void print();
};
void a::print()
{
cout << "hello word" << endl;
}
int main(int argc, char* argv[])
{
a::print();
a a;
a.print();
// a.print(); --error
return 0;
}
对象名.静态函数() 类名::静态函数() 是可以的
类名.静态函数() 是不可以的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯