VC2008/CLR 下静态调用自写的DLL

    两三天了,这个问题一直困扰着我,铛铛铛的报错也听习惯,难道我的人生真就这么失败吗?

  叮!

  了解,这句话通过。

    进入正题:VC2008/CLR程序下是可以静态调用自写DLL,只要有dll.h/dll.lib/dll.dll这三个文件就可以方便的调用。关键是这三个文件要真的很规范。尤其是头文件。我把例子代码放出。只有两个工程文件。dll.h和dll.cpp

//////////////////////////////////////////

///////////////////////////////////////////

//////////////////////////////////////////

dll.h

 #ifndef _DLLTUT_DLL_H_ #define _DLLTUT_DLL_H_ // Make our life easier, if DLL_EXPORT is defined in a file then DECLDIR will do an export // If it is not defined DECLDIR will do an import #if defined DLL_EXPORT #define DECLDIR _declspec(dllexport) #else #define DECLDIR _declspec(dllimport) #endif // Specify "C" linkage to get rid of C++ name mangeling extern "C" { // Declare 2 functions ////////////////////////////别的什么你都不用看懂,非想看懂,就自己网上查吧, ///////////////////////////你只要在下面加入你要导出的函数或类就可了。 DECLDIR int add(int a,int b); DECLDIR int sub(int a,int b); } // End the inclusion guard #endif

////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////

dll.cpp

 

/////////切记,下面这两个#的顺序千万不要放错,是有先后的。

 #define DLL_EXPORT #include "dll1.h" extern "C" { DECLDIR int add( int a, int b ) { return a+b; } DECLDIR int sub(int a,int b) { return a-b; } }

/////////////////////////////////////////////////////////////////

生成,找到 dll.lib/dll.dll,再加上头文件dll.h

把这三个文件放到你的工程目录下

在你的代码最前面加入下面两条代码

 

 

#include "dll.h" #pragma comment( lib, "dll.lib" )   

OK,现在,你可以直接在你的程序空间中使用DLL中定义的函数和类了。

当然,要想通过编译,你要把编译器改成混合的,什么?你不知道?

OK   项目-> 项目属性-> 配置属性-> 常规-> 公共语言运行库支持   中选择公共语言运行库支持(/clr)

其实使用API也是这样的。

#include <windows.h> #pragma comment( lib, "user32.lib" )   

这样你就可以用了,也许还要加::全局,谁知道呢。自已试吧。

咱这代码可是通过工程验证的,在此留个记录,以备日后之用。

其实也没什么,这些在网上都有,只是没人愿意像我这样啰嗦一下。希望能对一些朋友有所帮助,别像我这样空忙了两三天。

你可能感兴趣的:(VC2008/CLR 下静态调用自写的DLL)