如何使用Visual c++命令提示符构建DLL

How do I construct a DLL using Visual C++ command prompt?

本文关键字:构建 DLL 命令提示符 c++ 何使用 Visual      更新时间:2023-10-16

我正在尝试为下面的代码构建一个DLL。

test.cpp

#include <windows.h>
bool _stdcall DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    return TRUE;
}
extern "C" _declspec(dllexport) bool _stdcall C_thread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId)
{
    HANDLE hThread;
    DWORD threadID;
    hThread = CreateThread(lpThreadAttributes,dwStackSize,lpStartAddress,lpParameter,dwCreationFlags,lpThreadId);
    return hThread;
}

首先,我尝试在可视化命令提示符中使用下面的命令来编译它。

cl /Zi test.cpp kernel32.lib

但是显示以下错误。

fatal error LNK1561: entry point must be defined

我需要通过命令提示选项来解决这个错误。

请帮我解决这个问题

入口点类型错误:BOOL与BOOL不相同(参见MSDN上的DllMain)。这不是Visual Basic,而是Visual c++。

你需要传递一个额外的选项给编译器,告诉它链接一个DLL,而不是链接一个可执行的映像。一个最小的例子是:

#include <windows.h>
BOOL WINAPI DllMain(HANDLE hInst, DWORD dwReason, LPVOID lpReserved)
{
    return TRUE;
}
BOOL WINAPI MyFunction(int value)
{
    return TRUE;
}

cl /nologo /W3 /Ox /Zi /MD /LD test.cpp编译得到test.dll。

我终于找到了问题的答案。下面简单的命令会有所帮助。

cl/Zi/LD test.cpp