C++ 如何使用Visual C++;命令提示符?

C++ 如何使用Visual C++;命令提示符?,c++,visual-studio,fatal-error,C++,Visual Studio,Fatal Error,我正在尝试为下面的代码构造一个DLL 测试.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 lpThreadAttr

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

测试.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;

}
但它显示了以下错误

fatal error LNK1561: entry point must be defined
我需要通过命令提示符选项来解决这个错误


请帮我解决这个问题。

入口点类型错误:BOOL与BOOL不同(请参阅)。这不是Visual Basic,而是VisualC++。 您需要向编译器传递一个附加选项,告诉它作为DLL链接,而不是链接可执行映像。一个最简单的例子是:

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

并使用
cl/nologo/W3/Ox/Zi/MD/LD test.cpp
进行编译,以获得test.dll。/Zi在.pdb文件中获取符号。

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


cl/Zi/LD test.cpp

首先,欢迎来到StackOverflow!我们希望在这方面有所帮助,但恐怕你的问题令人困惑。我并不想批评你,但看起来你只是从网上截取了一段你不懂的代码,然后把它扔给编译器,希望dll能弹出。也许您应该后退一步,删除您的代码示例,并尝试解释您希望实现的目标。(顺便说一句:从命令提示符创建dll将是一项非常具有挑战性的工作,即使对于一个有经验的程序员来说也是如此;您有什么特殊原因不能使用VisStudio吗?)。基本上我是linux用户。大部分在命令提示符下工作都适合我。所以,我选择了可视化命令提示符。现在我来解决我的问题。我正在为CreateThread()创建钩子函数。但是我的错误,它有错误。所以,只需在DLL中编写createThread函数。通过使用我的函数(C_thread()),我将调用CreateThread()函数。为此,我尝试构造一个DLL。所以,我编译了它。但它显示了致命的错误。
#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;

}