实例:https://github.com/forever19l/FDocuments/tree/master/c%2B%2B/Project/DllDemo
c++创建dll
1、在头定义中使用extern"C"__declspec(dllexport) 表示导出函数,可直接导出整个类,也可无类定义直接导出函数。
c++调用c++接口的dll
b、在属性/配置属性/链接器/输入/附加依赖项 处添加xxx.lib。
#include <Windows.h>HINSTANCE hdll;
hdll=LoadLibrary("C:\\project\\CSocket\\Debug\\CSocket.dll");
if(hdll==NULL){
FreeLibrary(hdll);
}
制作lua接口的c++ dll
#include<stdio.h>
#include"lua.hpp"
extern "C"__declspec(dllexport)int __cdecl luaopen_LuaSocket(lua_State * L);
2、添加interface.cpp,cpp为lua require该DLL的实现,该处流程完全一样。
#include"interface.h"
int tolua_global_open(lua_State* tolua_S);
int __cdecl luaopen_LuaSocket(lua_State *L)
{
printf("< Load for Lua DLL LuaSocket > ...\r\n");
tolua_global_open(L);
printf("< Load for Lua DLL LuaSocket > Finished\r\n");
return 0;
}
$#include "LuaSocket_function.h"
bool ConnectSocket(const char* ip, int port);
char* SendMsg(const char* cmd);
bool Close();
a、添加批处理文件global.bat (安装windows lua,并设置环境变量)。该批处理是使用tolua++.exe,通过带有接口定义的pkg文件来生成 cpp文件(lua实现c++功能)。
rem tolua = C:\lua\bin\tolua++.exe
tolua++.exe -o global_lua.cpp global.pkg
require("LuaSocket");