好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 seeyou_shj 于 2019-10-1 21:06 编辑
捉摸了一下午,没有头绪,请高手指点。
dll文件,名称为mydll.c,内容如下:
int dub(int x)
{
return x*2;
}
用mingw自带的编译器编译为dll文件。得到以便依的dll文件mydll.dll:
gcc -shared mydll.dll -c mydll.c
做个主程序,调用该dll文件。文件名main.c,内容如下:
#include <stdio.h>
#include <windows.h>
typedef int (*INT_FUNC)(int);
int main()
{
INT_FUNC db;
HINSTANCE hInstLibrary = LoadLibrary(L"mydll.dll");
db = (INT_FUNC)GetProcAddress(hInstLibrary,"dub");
printf("hello,%d\n",db(33));
FreeLibrary(hInstLibrary);
return 0;
}
静态调用dll文件倒是可以,用gcc main.c mydll.dll就可以编译成功。问题是怎么实现动态调用该dll文件?
用gcc main.c编译后,运行,则提示dll文件的编译mydll.dll没有被指定在windows上运行……网上查了一下,说是因为该dll没有注册的原因。于是利用regsvr32注册该dll,提示可能与windows版本不兼容……
直接不知道该怎么做了。
请高手指点。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|