标签:pExport MATUREAPPROACH 导出 MatureApproach IExport c++ DLL void
Mature Approach(用抽象c++接口)
接口类:
MatureApproach.h
#pragma once #ifdef MATUREAPPROACH_EXPORTS #define MATUREAPPROACH_API __declspec(dllexport) #else #define MATUREAPPROACH_API __declspec(dllimport) #endif class IExport { public: virtual void Hi() = 0; virtual void Test() = 0; virtual void Release() = 0; }; extern "C" MATUREAPPROACH_API IExport* _stdcall CreateExportObj(); extern "C" MATUREAPPROACH_API void _stdcall DestroyExportObj(IExport* pExport);
MatureApproach.cpp
// MatureApproach.cpp : Defines the entry point for the DLL application. // #include "stdafx.h" #include "MatureApproach.h" #include "ExportClassImpl.h" #ifdef _MANAGED #pragma managed(push, off) #endif BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } #ifdef _MANAGED #pragma managed(pop) #endif MATUREAPPROACH_API IExport* APIENTRY CreateExportObj() { return new ExportImpl; } //这里不能直接delete pExport,因为没有把IExport的析构函数定义为虚函数 MATUREAPPROACH_API void APIENTRY DestroyExportObj(IExport* pExport) { pExport->Release(); }
实现类:
#pragma once #include "MatureApproach.h" class ExportImpl : public IExport { public: virtual void Hi(); virtual void Test(); virtual void Release(); ~ExportImpl(); private: };
cpp略
配置要点:
最后导出MatureApproach.h,MatureApproach.dll,MatureApproach.lib
调用:
配置
包含MatureApproach.h目录
添加MatureApproach.lib目录
指定MatureApproach.lib
代码调用:
#include "MatureApproach.h" //#pragma comment(lib, "../debug/MatureApproach.lib") int _tmain(int argc, _TCHAR* argv[]) { IExport* pExport = CreateExportObj(); pExport->Hi(); pExport->Test(); DestroyExportObj(pExport); system("pause"); return 0; }
参考:
(40条消息) 【C++笔记 】如何从DLL中导出一个c++类_muyijames的博客-CSDN博客_c++ dll导出类
C++ DLL导出类 知识大全 - DoubleLi - 博客园 (cnblogs.com)
标签:pExport,MATUREAPPROACH,导出,MatureApproach,IExport,c++,DLL,void 来源: https://www.cnblogs.com/itstar/p/16260804.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。