[英]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.