This question is intersting.
project ->setting->link
there are many many resouce of this kind in net
project ->setting->link
there are many many resouce of this kind in net
解决方案 »
- 求一颜色合成算法
- 了解CCamand 协议的请进.
- 我想问一下关于SystemParametersInfo的问题
- **攸关的大问题,各位大虾一定捧场!!!
- 如何使一个CCheckListBox中某一项前的复选框不可选
- #include 的一个问题
- 请问怎样在程序中调用一个批处理文件(.bat)?
- ((CDocument*)(&mydoc))->func();和((Cdocument)mydoc).func();为什么不一样啊?
- 多线程网络编程问题,求前辈指点?
- 为什么不能正常获取CRichEditCtrl里的文本?救人一命~胜造7级浮屠啊~~
- 资源DLL中BMP图像的资源名称在哪里设定,我如何在用::LoadBitmap()函数调用?
- 高手,怎么做浮动菜单?我搞不清楚也.
DLL中引出的函数的需声明为类似下面的类型:
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) void WINAPI someFunc1(void);
__declspec(dllexport) int WINAPI someFunc2(int, char *);
#ifdef __cplusplus
} // extern "C"
#endif同时提供一个头文件,供调用DLL的程序使用,只要将上面的dllexport改成dllimport即可。
在接口函数当中,使用标准C声明的变量类型,不使用VC的自有变量,比如CString,CRect等类型的变量,通过int,char,long等基本类型来实现
如果你的DLL只是让别人调用你的几个输出函数的话,比如是钩子DLL,按照azuo_lee说的做最好。
wyzegg说的用def,其实效果是和azuo_lee是一样的,都是防止C++编译器把输出函数的名字按微软的规则改变。我是推荐用COM,这样没有版本问题,改接口时不需要调用程序重新编译,等等好处,现在也许用不到,但是将来你升级时就会意识到。
1.声明要写 extern "C" __declspec(dllexport) int yourfun();
2.def文件也要加上 yourfun
extern "C" _declspec(dllexport) _stdcall yourfun();
dll的。cpp文件里
extern "C" _declspec(dllexport) _stdcall yourfun()
{
}
编译通过后,把*.lib和*。dll拷贝到你的应用程序目录下,在project->setting->link->object/libray中写上*.lib.
然后在应用程序中也要声明:
extern "C" _declspec(dllimport) _stdcall yourfun()然后就可以调用了之所以加入_stdcall ,是为了能在其他语言中调用