![]() Programming/Windows/VC++.NETで外部DLLの作り方https://dexlab.net:443/pukiwiki/index.php?Programming/Windows/VC%2B%2B.NET%A4%C7%B3%B0%C9%F4DLL%A4%CE%BA%EE%A4%EA%CA%FD |
VC++.NETで外部DLLの作り方 †説明 †C++で作成したDLLをVBや他言語から呼び出す時の決まり事
特に、DEFファイルを指定しないと、エクスポートされる関数名が「TestFunc」になって欲しい所が、「_TestFunc@」という用に修飾されてしまいます。 必ず指定しましょう。 dllmain.h †#ifndef __DllMain_h__ #define __DllMain_h__ #define DllExport __declspec(dllexport) #ifdef __cplusplus extern "C" { #endif // エクスポートする関数 DllExport void WINAPI TestFunc(const char* Input, char* Output); typedef void (*LPTESTFUNC)(const char* Input, char* Output); #ifdef __cplusplus } #endif #endif // __DllMain_h__ dllmain.cpp †#include "stdafx.h" #include "dllmain.h" // DllMain (固定) BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch( ul_reason_for_call) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } DllExport void WINAPI TestFunc(const char* Input, char* Output) { // 処理 } TestDll.def †(Test.dllを作成したい場合、LIBRARY指定で".dll"は必要ないようです。) LIBRARY "Test" DESCRIPTION "DLLの説明文" EXPORTS TestFunc DEFファイルの指定 † |
|