我目前正在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