我正在尝试创建一个没有类的 C++ 动态库。我希望它的工作方式类似于您可以包含 <string.h
的方式> 并直接调用 strlen。
我可以创建一个可以编译但无法与我的库正确链接的类。
这是我现在正在处理的测试库:
标题
#ifndef _DLL_H_
#define _DLL_H_
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved);
extern "C" __declspec(dllexport) int testMethod(int a);
#endif
Cpp
#include "dll.h"
int testMethod(int num)
{
std::cout << "test message" << std::endl;
return 1;
}
BOOL APIENTRY DllMain (HINSTANCE hInst, // Library instance handle. ,
DWORD reason, // Reason this function is being called. ,
LPVOID reserved) // Not used. )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
// Returns TRUE on success, FALSE on failure
return TRUE;
}
最后,这是我用来测试 Dll 的类,它被告知要链接到 lib mingw 输出
#include <iostream>
#include "../Dll/dll.h"
using namespace std;
int main(int argc, char *argv[])
{
testMethod(5);
}
我大约一年没用过 C++,所以我很生疏
最佳答案
extern "C" __declspec(dllexport) int testMethod(int a);
这需要在链接到 DLL 的应用程序中进行 dllimport。大多数人使用 #define 编译他们的 DLL,它控制它是导出还是导入。
#ifdef INSIDE_MYDLL
#define MYDLLAPI __declspec(dllexport)
#else
#define MYDLLAPI __declspec(dllimport)
#endif
extern "C" MYDLLAPI int testMethod(int a);
关于c++ - 创建一个没有类名的 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935127/