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ファイルの指定

(上で作成したDEFファイルを指定する)
def.png


添付ファイル: filedef.png 4624件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38