vsstudio2017利用pybind11给C++动态库封装python接口 遇到的问题

[2023.4.3]未完成还会再来更新
参考:VS2017修改代码编码格式为utf-8(https://blog.csdn.net/weixin_43890534/article/details/129430226)
pybind11学习 | 类的绑定(https://blog.csdn.net/qq_39784672/article/details/128427222)

难点:

  • 导入外部链接库提示未定义
    这个方法看一下就行了,用起来太麻烦了。
    只有运行的py文件同目录下有所依赖的所有dll库就可以运行,我之前运行不了就是因为少动态库,在电脑环境变量里加了也找不到(不知道为啥),不过只要保证执行的py文件相同目录下有所依赖的所有外部库即可运行。
	int VkCpEnumCard(unsigned int deviceType);
	int CardManager::VkCpEnumCard(unsigned int deviceType)
	{
		typedef int(*PyVkEnumCard)(unsigned int);
		HMODULE module = LoadLibrary("VisionKitApi.dll");
		if (module == NULL)
		{
			std::cout << "加载VisionKitApi.dll动态库失败" << std::endl;
			return -1;
		}
		PyVkEnumCard VkEnumCard = (PyVkEnumCard)GetProcAddress(module, "VkEnumCard");
		return VkEnumCard(deviceType);
	}
  • 如何以参数形式获取值而不是返回值获取值

  • 枚举类型定义、自定义结构体定义
    解决方法:

  • 包含头文件#include 报错
    在这里插入图片描述
    解决方法:property -> c/c++ -> language -> conformance mode属性设置为no,问题就消失了。
    vsstudio2017利用pybind11给C++动态库封装python接口 遇到的问题_第1张图片

你可能感兴趣的:(Python,c++,开发语言)