创建好一个dll后
把xx.dll 和xx.lib 拷到应用程序目录下,
在stdafx.h中添加 #import "xx.dll"  no_namespace
然后是不是可以直接调用dll中的导出函数了?我看到有的地方
要在myxxView.cpp中的#endif下添加  extern "C" __declspec(dllimport) int fun(int x1,int x2,int x3);
而没有用import请解释一下其中原理,
关于dll方面有什么好的参考书推荐一下?
谢谢

解决方案 »

  1.   

    “在stdafx.h中添加 #import "xx.dll"  no_namespace”  什么东西啊?建议你看看《windows核心编程》
      

  2.   

    extern "C" __declspec(dllimport) int fun(int x1,int x2,int x3);是将int fun(int x1,int x2,int x3)作为这个.DLL文件的导出函数导出.
      

  3.   

    有两种方法,一种隐式加载,一种显式加载隐式:创建好一个dll后
    把xx.dll 和xx.lib 拷到应用程序目录下,首先:#pragma comment(lib,"xx.lib")然后声明函数:extern "C" __declspec(dllimport) int fun(int x1,int x2,int x3);然后就可以调用了。显式:拷贝DLL到.exe文件目录,
    假设函数为: int test(int a);定义函数指针类型:  typedef int(* FUNC)(int);
             int a=5;
    FUNC myfun=NULL;
    加载dll: HINSTANCE hInstance=::LoadLibrary("dlltest.dll");
    获取函数地址: myfun=(FUNC)GetProcAddress(hInstance,"test");
    myfun(a);
    FreeLibrary(hInstance);