C++ 如何设置dll的入口点
首先,我认为入口点在DLL DLLMain中,但当我尝试在C#中导入它时,我得到一个错误,没有找到入口点。下面是我的代码:C++ 如何设置dll的入口点,c++,winapi,dll,dllimport,C++,Winapi,Dll,Dllimport,首先,我认为入口点在DLL DLLMain中,但当我尝试在C#中导入它时,我得到一个错误,没有找到入口点。下面是我的代码: #include <Windows.h> int Test(int x,int y) { return x+y; } BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVO
#include <Windows.h>
int Test(int x,int y)
{
return x+y;
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
MessageBox(0,L"Test",L"From unmanaged dll",0);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#包括
整数测试(整数x,整数y)
{
返回x+y;
}
BOOL APICENT DllMain(模块HMODULE,
德沃德·乌尔打电话的理由,
LPVOID lpReserved
)
{
开关(ul\u呼叫原因\u)
{
案例DLL\u进程\u附加:
MessageBox(0,L“测试”,L“来自非托管dll”,0);
案例DLL\u线程\u连接:
案例DLL\u线程\u分离:
案例DLL\u进程\u分离:
打破
}
返回TRUE;
}
如何设置dll的入口点?若你们不介意的话,你们能给我一点关于入口点的解释吗
比如,我必须再次设置导入同一个dll并更改入口点,以便在同一个dll中使用其他函数吗?提前感谢。在您的示例中,似乎您打算将Test()作为一个入口点,但是您没有导出它。即使你开始导出它,它也不能用C++名字“装饰”(Mangle)正常工作。我建议将您的功能重新定义为:
extern "C" __declspec(dllexport) int Test(int x,int y)
<> >代码>外部“C”<代码>组件将删除C++名称的修改。\uu declspec(dllexport)
组件导出符号
有关更多详细信息,请参阅
编辑:您可以通过这种方式添加任意数量的入口点。调用代码只需知道要检索的符号的名称(如果您正在创建一个static.lib,它会为您处理)。在C声明中使用u stdcall或在C声明中调用convention.Cdecl。