如何查看 python import 文件位置

如何查看 python import 文件位置,第1张

修改文件夹名字的方式排查,命令行 import ctypes 用的是 python 目录下 lib/ctypes 文件夹下的文件,而编译环境用的是同一个 python 目录(修改python文件夹名无法编译),但是修改 lib/ctypes 文件夹名,仍能编译通过 import ctypes。

直接将函数参数,定义为结构体指针类型即可。

然后传入对应结构体数组名,或者结构体变量的地址。

比如

struct test {int a;};

struct test t[100];

定义

void func(struct test p){}

调用

func(t);

使用Python的ctypes,我们可以直接调用由C直接编译出来的函数。其实就是调用动态链接库中的函数。为什么我们需要这样做呢,因为有些时候,我们可能需要一个性能上比较讲究的算法,有些时候,我们可以在Python中使用已经有了的现成的被封闭在动态链接库中的函数。下面是如何调用的示例。

首先,我们用一个乘法来表示一个算法功能。下面是C的程序:

int multiply(int num1, int num2){   

 return num1  num2;

 }    

如果在Windows下,你可能需要写成下面这个样子:

  #include <windowsh> 

   BOOL APIENTRYDll

   Main(HANDLE hModule, DWORD dwReason, LPVOID lpReserved){    

   return TRUE;

   } 

   __declspec(dllexport) 

   intmultiply(int num1, int num2){ 

      return num1  num2;

   }    

然后,自然是把这个C文件编成动态链接库:

Linux下的编译:

   gcc -c -fPIC libtestc

   gcc -shared libtesto -o libtestso    

Windows下的编译:

   cl -LD libtestc -libtestdll    

于是在我们的Python中可以这样使用:

(其中的libtestso在Windows下改成libtestdll即可)

  >>> from ctypes import 

  >>> import os

  >>> libtest = cdllLoadLibrary(osgetcwd() + '/libtestso')

  >>> print libtestmultiply(2, 2)4    

注意:上面的Python脚本中需要把动态链接库放到当前目录中。

以上就是关于如何查看 python import 文件位置全部的内容,包括:如何查看 python import 文件位置、请教ctypes如何实现传入结构体数组指针的参数、python 字典调用C++函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9490371.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存