如何使用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
编译得到test.dll。
我终于找到了问题的答案。下面简单的命令会有所帮助。
cl/Zi/LD test.cpp
相关文章:
- 如何从Cygwin下构建的C++程序链接到DLL
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- C\C++构建的dll在LabView中实时运行
- 如何在没有任何依赖库的情况下在Visual Studio中构建dll?
- 如何在运行时构建DLL
- 使用 Visual Studio 构建 dll
- MSVS 2015构建DLL-在MSVCRTD.LIB(EXE_MAIN.OBJ)中的Indoke_main中未解决的外
- 如何在Qt creator中构建dll,就像在Visual Studio中一样
- 使用/MT或/MD在Visual Studio 10中构建dll
- 使用从导入库(.lib)转换的库文件(.a),使用gcc构建dll
- 在构建dll时,我需要在客户端的标头中提供多少个父级作为__declspec(导出)
- 在Qt中构建DLL并在Visual Studio+Delphi中使用
- 需要帮助为JNI调用构建DLL.未解析的外部引用.Borland编译器
- 在构建dll时,可以使用库进行链接吗?
- 用vc++函数构建DLL是不可访问的
- Visual Studio.如何构建DLL(在命令行中),通过附加到进程来调试工作
- 发布-构建DLL的行为出乎意料
- 当使用dll库时,是否有必要包含用于构建dll的所有头文件?
- 在c++ Netbeans中构建DLL文件
- 如何使用Visual c++命令提示符构建DLL