欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python調(diào)用vs2015生成的dll文件

系統(tǒng) 1903 0

?

? ? ? ?目前工作中,Python用的最多,但是很多數(shù)學(xué)計(jì)算在Python中運(yùn)行,速度會(huì)很慢,而Python本身就是基于C開(kāi)發(fā)的,而且它的很多第三方模塊也是,所以Python對(duì)于C接口是支持的,所以在此記錄一下,Python調(diào)用C接口的過(guò)程。在網(wǎng)上看了很多教程,都只有Python調(diào)用dll的code,對(duì)于dll的如何生成只字不提,或者是基于linux的.so文件。在單獨(dú)搜索dll如何生成后,我按照以下的code生成了dll:

.cpp文件

            
              #define EXPORT_MY_DLL

#include 
              
                
#include "sample.h"
using namespace std;

int gcd(int x, int y)
{
	int g = y;
	while (x > 0)
	{
		g = x;
		x = y % x;
		y = g;
	}
	return g;
}
              
            
          

.h文件

            
              __declspec(dllexport) int gcd(int , int );
            
          

網(wǎng)上很多生成dll的教程,就像上述code一樣,這樣生成的dll,c/c++程序調(diào)用是沒(méi)有什么問(wèn)題的,但是如果是Python調(diào)用就會(huì)出現(xiàn)如下的錯(cuò)誤。

Python調(diào)用dll的code

            
              import ctypes

x = ctypes.c_int(10)
y = ctypes.c_int(50)


dll = ctypes.WinDLL('sample.dll')
result = dll.gcd(x,y)
print(result)
            
          

會(huì)出現(xiàn)錯(cuò)誤提示

Python調(diào)用vs2015生成的dll文件_第1張圖片

會(huì)發(fā)現(xiàn)在dll中定義的函數(shù)找不到,雖然dll可以正常導(dǎo)入,我定義的函數(shù)名稱叫g(shù)cd(),實(shí)現(xiàn)了兩數(shù)求最大公約數(shù)的功能。如果,我們用下面的code,生成dll,同樣的python調(diào)用code,是可以成功調(diào)用的,這份代碼參考博客地址為:

https://blog.csdn.net/qq_28726333/article/details/80040239

.cpp文件

            
              #define EXPORT_MY_DLL

#include 
              
                
#include "sample.h"
using namespace std;

MY_API int gcd(int x, int y)
{
	int g = y;
	while (x > 0)
	{
		g = x;
		x = y % x;
		y = g;
	}
	return g;
}
              
            
          

.h文件

            
              #ifdef EXPORT_MY_DLL 
#define MY_API __declspec(dllexport)
#else 
#define MY_API __declspec(dllimport) 
#endif 
extern "C"
{
	MY_API int gcd(int , int );
}
            
          

Python調(diào)用執(zhí)行結(jié)果

Python調(diào)用vs2015生成的dll文件_第2張圖片

我Python版本是3.6.5,我不確定是Python版本的關(guān)系,還是生成dll方式的關(guān)系,我只在以上生成dll的code上實(shí)現(xiàn)了Python調(diào)用dll文件的功能。而在實(shí)際更改code的過(guò)程中,extern “c”在dll的生成中,是必須加進(jìn)去的,所以我的一個(gè)猜想是:Python對(duì)C的接口更支持,我用下面那個(gè)鏈接也試了一下,主要還是在extern “C”這,雖然下面這篇博客的評(píng)論有說(shuō)我在上面提到的那個(gè)問(wèn)題,即“function not found”,但是我實(shí)際測(cè)試了一下,完全沒(méi)有,Python可以正常調(diào)用。

https://blog.csdn.net/weixin_38285131/article/details/81288338

知乎這篇文章驗(yàn)證了我的猜想,ctypes這個(gè)Python庫(kù)確實(shí)對(duì)c++支持不是很好

https://zhuanlan.zhihu.com/p/20152309


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 丝袜美腿中文字幕 | 亚洲国产日产韩国欧美综合 | 亚洲一区二区三区欧美 | 成人嗯啊视频在线观看 | 久久久精品午夜免费不卡 | 亚洲欧美日韩中文字幕在线不卡 | 亚洲精品老司机综合影院 | 精品视频手机在线观看免费 | 国产精品免费播放 | 国产一级片网站 | 欧美日韩一区二区三区视频播 | 爱性久久久久久久 | 欧美精品在线免费观看 | 999热在线精品观看全部 | 久久www免费人成看片高清 | 韩国精品免费视频 | 天干夜天天夜天干天国产电影 | 国产图片区| 婷婷免费视频 | 精品亚洲福利一区二区 | 美国一级特色大黄 | a国产精品| 午夜影院在线播放 | 日本三级2020 | 欧美毛片aaa激情 | 午夜一级毛片 | 国产日韩欧美一区 | 亚洲一级毛片中文字幕 | 国产91久久精品 | 欧美国产激情二区三区 | 欧美国产另类 | 一级寡妇乱色毛片全18 | 欧美日韩精品一区二区三区视频 | k8久久久一区二区三区 | 思瑞在线观看 | 亚洲欧美另类色妞网站 | 在线国产视频 | 欧美黄色第一页 | 欧美日韩国产精品自在自线 | 亚洲性一区 | 欧美久草|