DAY102_DLL MAKE & USE IN CODEBLOCKS
2016-11-10 19:49
423 查看
TOPIC:
动态链接库在codeblocks上的创建和使用
创建:
新建工程,工程类型选择动态链接库,完成之后自动生成基本两个文件(一个头文件,一个CPP文件)。简单的功能架构以及要在哪里声明,哪里写实现,怎么写,这些在自动生成的文件中都已经有了,那这样你写出来你想要的动态链接库就很容易了。
不要选择运行(运行会提示:You must select a host application to "run" a library.),这里进行编译。然后到工程bin文件里边去找生成的DLL文件。
使用:
举个栗子
//load dll
HINSTANCE ***dll;
char _filepath[200] = {};
getcwd(_filepath,200);
strcat(_filepath,"\\_***dll.dll");
***dll = LoadLibrary(_filepath);
if(***dll==NULL)
{
FreeLibrary(***dll);
return -1;
}
//get function "***Enter"是dll的导出函数
typedef void (* dll***Enter)(); //最前面的*是函数指针
dll***Enter ***Enter;
***Enter = (dll***Enter) GetProcAddress(***dll,"***Enter");
if(***Enter==NULL)
{
FreeLibrary(***dll);
return -1;
}
//execute function,get"start!"
try{
***Enter();
}catch(exception e){
cout<<"exception:execute function occur error";
}
FreeLibrary(***dll);
addition:
创建时候也可以自定义dll加载和撤销时候要执行的事件,这个需要你来自修改DLLMain函数内容。
栗子:
//DllMain
extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
cout<<"ATTACHKDLL Initializing!\n";
break;
case DLL_PROCESS_DETACH:
// detach from process 进行清理工作
cout<<"DETACHDLL Terminating!\n";
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
动态链接库在codeblocks上的创建和使用
创建:
新建工程,工程类型选择动态链接库,完成之后自动生成基本两个文件(一个头文件,一个CPP文件)。简单的功能架构以及要在哪里声明,哪里写实现,怎么写,这些在自动生成的文件中都已经有了,那这样你写出来你想要的动态链接库就很容易了。
不要选择运行(运行会提示:You must select a host application to "run" a library.),这里进行编译。然后到工程bin文件里边去找生成的DLL文件。
使用:
举个栗子
//load dll
HINSTANCE ***dll;
char _filepath[200] = {};
getcwd(_filepath,200);
strcat(_filepath,"\\_***dll.dll");
***dll = LoadLibrary(_filepath);
if(***dll==NULL)
{
FreeLibrary(***dll);
return -1;
}
//get function "***Enter"是dll的导出函数
typedef void (* dll***Enter)(); //最前面的*是函数指针
dll***Enter ***Enter;
***Enter = (dll***Enter) GetProcAddress(***dll,"***Enter");
if(***Enter==NULL)
{
FreeLibrary(***dll);
return -1;
}
//execute function,get"start!"
try{
***Enter();
}catch(exception e){
cout<<"exception:execute function occur error";
}
FreeLibrary(***dll);
addition:
创建时候也可以自定义dll加载和撤销时候要执行的事件,这个需要你来自修改DLLMain函数内容。
栗子:
//DllMain
extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
cout<<"ATTACHKDLL Initializing!\n";
break;
case DLL_PROCESS_DETACH:
// detach from process 进行清理工作
cout<<"DETACHDLL Terminating!\n";
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
相关文章推荐
- SharePoint 2013 排错之"Code blocks are not allowed in this file"
- Code::Blocks 12.11 error: ‘nullptr’ was not declared in this scope&GNU GCC -std=gnu++0x
- SharePoint 2013 排错之"Code blocks are not allowed in this file"
- How&nbsp;to&nbsp;write/use&nbsp;DLL&nbsp;in&nbsp;Linux&nbsp;sy…
- Usefunctional programming in Perl to make test automation code more structural
- codeblocks gcc error: 'for' loop initial declarations are only allowed in C99 mode|
- Delete a file in use - Run an EXE Hidden - Run code in other process' memory)(vb)
- Code::Blocks 12.11 error: ‘nullptr’ was not declared in this scope&GNU GCC -std=gnu++0x
- "Thinking in Code" Audio Interviews now Available
- "Thinking in Code" Audio Interviews now Available
- "Thinking in Code" Audio Interviews now Available
- 解决"Access volidate address in module "midas.dll"
- My Web Access Code in C#(Basic Post&Get method) / C#访问Web代码(基本Post和Get方法)
- After restoring database in SQL Server, if you can't use diagram, execute these sentences
- "Thinking in Code" Audio Interviews now Available铪
- "Thinking in Code" Audio Interviews now Available
- "Thinking in Code" Audio Interviews now Available
- "Thinking in Code" Audio Interviews now Available铪
- 《SerialPort (RS-232 Serial COM Port) in C# .NET》in Coad's Code
- "Thinking in Code" Audio Interviews now Available