tracyliuyan127 2014-04-29 07:54 采纳率: 0%
浏览 814

求各位帮我看看这段代码怎么改改

我想做个ISAPI的扩展程序,平台是vs2010,然后建立了一个 win32控制台控程序 代码如下
enter code here#include
#include
#include
#include
#include //ISAPI扩展的头文件

void WriteContext(EXTENSION_CONTROL_BLOCK *pECB, char *pszFormat);
void StartContext(EXTENSION_CONTROL_BLOCK *pECB);
void EndContext(EXTENSION_CONTROL_BLOCK *pECB);

BOOL APIENTRY DLLMain(HANDLE hModule, DWORD dwCallReason, LPVOID lpReserved)
{
return TRUE;
}

BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)
{
pVer->dwExtensionVersion = HSE_VERSION;
strncpy(pVer->lpszExtensionDesc, "My first ISAPI program", HSE_MAX_EXT_DLL_NAME_LEN);
return TRUE;
}

DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB)
{
StartContext(pECB);
WriteContext(pECB, "

this is my first ISAPI program!!hello money!!

");
EndContext(pECB);
return HSE_STATUS_SUCCESS;
}

BOOL WINAPI TerminateExtension(DWORD dwFlags)
{
return TRUE;
}

void WriteContext(EXTENSION_CONTROL_BLOCK *pECB, char *pszFormat)
{
char szBuffer[1024];
va_list arg_ptr;
va_start(arg_ptr, pszFormat);
vsprintf(szBuffer, pszFormat, arg_ptr);
va_end(arg_ptr);

DWORD dwSize = strlen(szBuffer);
pECB->WriteClient(pECB->ConnID, szBuffer, &dwSize, 0);

}

void StartContext(EXTENSION_CONTROL_BLOCK *pECB)
{
WriteContext(pECB, "\r\n

\r\n");
}

void EndContext(EXTENSION_CONTROL_BLOCK *pECB)
{
WriteContext(pECB, "\r\n");
}
提示错误是
错误 3 error LNK1561: 必须定义入口点 D:\学习\test\web.net\hello11\hello11\LINK hello11
请问各位我该怎么设置

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-09 13:17
    关注

    该回答引用ChatGPT

    这个错误提示意味着链接器找不到程序的入口点。 在 Windows 应用程序中,入口点通常是一个名为“WinMain”或“main”的函数,而在 DLL 中,入口点通常是 DLLMain 函数。


    在你的代码中,你已经实现了 DLLMain 函数,但你还需要添加一个 DllMain 函数来充当入口点。 将以下代码添加到你的代码中:

    BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        switch (fdwReason)
        {
            case DLL_PROCESS_ATTACH:
            case DLL_THREAD_ATTACH:
            case DLL_THREAD_DETACH:
            case DLL_PROCESS_DETACH:
                break;
        }
        return TRUE;
    }
    

    此外,如果你的项目是一个 DLL 项目,则需要在项目属性的“配置属性”>“常规”>“配置类型”下将“应用程序”更改为“动态库(.dll)”。


    最后,你需要在 Visual Studio 中配置链接器选项。转到项目属性的“配置属性”>“链接器”>“高级”,将“入口点”设置为“DllMain”。这将告诉链接器在 DLL 中查找 DLLMain 函数作为入口点。


    重新编译你的代码并重新运行。这应该会解决你的链接错误问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致