我目前正在C#應用程序中以下列方式導入一個函數。可以初始化一個dll文件 - 一個Dll構造函數
[DllImport("C:\\File.dll")]
public static extern int SomeMethod(int A);
我的dll文件是用C++編寫的。該方法也在dll的.def文件中定義。 目前,無論何時在第一次嘗試中調用此方法時都會調用其他幾個方法,這些方法爲此方法奠定了基礎。但是這些方法只需要調用一次。這些方法不會再被調用/我想知道是否有一種方法可以在加載dll文件後立即調用一組方法(初始化程序)。有沒有什麼作爲一個dll構造函數?
我有這樣的事情在我dllmain.cpp可以在那裏進入東西完成這個任務
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.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;
}
太糟糕VS不使用GNU兼容的編譯器。我*愛*'__attribute __((構造函數))'。 – 2013-03-03 07:04:14
您可以將代碼添加到DLL_PROCESS_ATTACH案例中,但是對於可以執行的操作有限制。建議導出一個init()函數並從你的應用程序調用它一次。 – hmjd 2013-03-03 07:59:23
那麼,這裏有什麼問題? – 2013-03-03 07:59:57