VS2015生成c++dll
C++ 程序调用 dll
C# 程序调用 dll
1. VS2015 生成C++dll
可以有两种方法通过_declspec(dllexport)
extern "C" __declspec(dllexport) int __stdcall add(int a, int b);嫌上面太麻烦,windows系统下可用 .def文件
其中:extern "c" 防止导出的函数名字是乱码
使用 def导出dll步骤如下:
新建Login.h
//登录接口
extern "C" int _stdcall Login(char* username, char* password);
//退出接口 无返回值
extern "C" bool _stdcall Logout();
新建Login.cpp
int _stdcall Login(char* name, char* pwd) {
}
新建模块定义文件Login.def
LIBRARY Logindll
EXPORTS
Login @ 1
Logout @ 2
Heartbeat @3
生成文件Debug 和Release下 Login.dll Login.lib
2.C++ 调用
需要3个文件 Login.h Login.dll Login.lib
根据Debug和Release 分别把三个文件拷贝到对应工程目录下
步骤:右键添加现有项 选择Login.h
右键添加现有项 选择Login.lib
在使用的地方 #include “Login.h”
直接使用函数
{
Login("user","pwd");
}
3.C# 调用
需要1个文件 Login.dll将Login.dll 拷贝到相对应的debug或release目录下
使用时代码如下
[DllImport("Logindll.dll", EntryPoint = "Login", CallingConvention = CallingConvention.StdCall)]
extern static int Login(string name,string pwd);
4. python调用
需要2个文件 Login.dll Login.lib将上面两个文件拷贝到.py文件同名目录
通过ctypes调用
注意python是x86 x64 和dll的版本保持一致
from ctypes import *
import os
CUR_PATH=os.path.dirname(__file__)
dllPath=os.path.join(CUR_PATH,"Logindll.dll")
pDll=cdll.LoadLibrary(dllPath)
pResutl= pDll.Logout()
print (pResutl)
注意:
x86 x64 debug release 库的对应关系
参考:CSDN-专业IT技术社区-登录blog.csdn.net在VS2015中用C++编写可被其它语言调用的动态库DLL - 优秀afa - 博客园www.cnblogs.com