Python&C++相互混合调用编程全面实战-04传递数字参数

Python&C++ xuhss 358℃ 0评论

C++支持传递参数

// C++ 中编译c格式的函数,如果用c语言编译就不需要(文件后缀名.c)
// __declspec(dllexport)函数导出到库中
#include <stdio.h>
extern "C" __declspec(dllexport) void TestCtyps(int x, float y, bool isNum)
{
    printf("In C TestCtypes %d %f %d\n", x, y, isNum);
    if (isNum)
    {
        printf("true");
    }
    else
    {
        printf("false");
    }
}

python添加函数的调用

print("Test Ctypes")
from ctypes import *

#导入库 windows中dll后缀名不用加
lib = CDLL("C:\\Users\\Administrator\\Desktop\\testctypes\\x64\\Debug\\testctypes")

try:
    lib.TestCtyps(101, 99.1, True)
except Exception as ex:
    print("testCtypes Error", ex)
# 等待用户输入,程序不退出
input()

添加调试参数

6cdd850633524d9fbcef4db5aafbee2a - Python&C++相互混合调用编程全面实战-04传递数字参数

运行:补货了这个异常

fdf1fe8adfb84e66931d2040e8d65002 - Python&C++相互混合调用编程全面实战-04传递数字参数

也就是说,整型是可以直接转换的,第二个参数浮点型不能够直接转换,

需要使用c_float

try:
    lib.TestCtyps(101, c_float(99.1), True)
except Exception as ex:
    print("testCtypes Error", ex)
# 等待用户输入,程序不退出
input()

运行成功输出结果:

5397dab57864453ea2c6f7fd94f6a881 - Python&C++相互混合调用编程全面实战-04传递数字参数

转载请注明:xuhss » Python&C++相互混合调用编程全面实战-04传递数字参数

喜欢 (6)

您必须 登录 才能发表评论!