gpt4 book ai didi

c++ - 如何为 dll 设置入口点

转载 作者:可可西里 更新时间:2023-11-01 15:55:55 25 4
gpt4 key购买 nike

首先我想到了 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,
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;
}

如何为我的 dll 设置入口点?如果您不介意,可以给我一些关于入口点的解释吗?

比如我是否必须再次设置导入同一个 dll 并更改入口点以便我可以在同一个 dll 中使用其他函数?提前致谢。

最佳答案

在您的示例中,您似乎打算将 Test() 作为入口点,但您并未导出它。即使您开始导出它,它也可能无法与 C++ 名称“装饰”(修饰)一起正常工作。我建议将您的功能重新定义为:

extern "C" __declspec(dllexport) int Test(int x,int y)

extern "C" 组件将移除 C++ 名称重整。 __declspec(dllexport) 组件导出符号。

参见 http://zone.ni.com/devzone/cda/tut/p/id/3056了解更多详情。

编辑:您可以通过这种方式添加任意数量的入口点。调用代码只需知道要检索的符号的名称(如果您正在创建静态 .lib,它会为您处理)。

关于c++ - 如何为 dll 设置入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com