私はwinsock用のLSPを書き込もうとしていますが、MSDNのドキュメントによると、dllは単一の関数をエクスポートすることになっています。Ws2spi.hで定義されているWSPStartup()
コンパイル中にエラーが発生します:
error C2375: 'WSPStartup' : redefinition; different linkage
私が追加した場合
__declspec(dllexport)
それへの指示。一方、私が使用する場合
__control_entrypoint(DllExport)
正常にコンパイルされますが、関数は実際にはエクスポートされません。依存関係ビューアを使用して確認しました。他のLSP実装が関数をエクスポートするかどうかを確認するために、VMWaresvsocklib.dllとmswsock.dllで依存関係ビューアーを使用しました。両方のdllが前述の関数をエクスポートします。
私のサンプル実装は次のとおりです:-
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <Ws2spi.h>
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;
}
__declspec(dllexport)
__checkReturn
int
WSPAPI
WSPStartup(
__in WORD wVersionRequested,
__in LPWSPDATA lpWSPData,
__in LPWSAPROTOCOL_INFOW lpProtocolInfo,
__in WSPUPCALLTABLE UpcallTable,
__out LPWSPPROC_TABLE lpProcTable
)
{
return 0;
}
それで、私はここで何を間違っているのですか?WSPStartup()関数をエクスポートするDLLを作成するにはどうすればよいですか?