繁体   English   中英

如何使用Visual C ++命令提示符构造DLL?

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

我正在尝试为下面的代码构造一个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进行cl /nologo /W3 /Ox /Zi /MD /LD test.cpp以获取test.dll。 / Zi在.pdb文件中获取符号。

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

cl / Zi / LD test.cpp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM