我想在python中呼叫fastreport.dll,下面說說我的幾次嘗試。
1、最先找到的例子是用clr來匯入,在這一句from FastReport import *報錯:ImportError: No module named 'FastReport'
2、后來開始糾結是不是dll的編碼方式(ANSI/unicode)和版本問題(32/64位),發現確實python是64位,dll是32位,后來換了python3.5.4 32位,但是還是不行
3、最后試了msvcrt.dll是可以成功的,說明環境應該沒問題,可能還是調取方式不對
4、試了ctypes的調取方式還是不行,下面是我的代碼
import ctypes
libHandle = ctypes.windll.kernel32.LoadLibraryW('msvcrt.dll')
lib = ctypes.CDLL(None, handle=libHandle)
lib.printf(b"hello world!")
libHandle = ctypes.windll.kernel32.LoadLibraryW('FastReport.dll')
lib = ctypes.WinDLL(None, handle=libHandle)
from FastReport import *
report = Report()
report.Load("bq.frx")
report.Show()
結果是

結果還是不對,我看別人都很輕松調出來了,我這為什么一直說沒有fastreport這個模塊呢?現在真的是沒辦法了,想看有沒有朋友遇到過類似問題,幫忙提點一下思路,先謝謝各位了
uj5u.com熱心網友回復:
那你為什么不看看別人怎么調的?uj5u.com熱心網友回復:
看了啊,同樣的代碼我這里就用不了,查到的方法都試了,還是不行
uj5u.com熱心網友回復:
你知道 FastReport.dll 里的函式定義嗎?是純C語言嗎
uj5u.com熱心網友回復:
這樣試試呢?使用時,引數要與C函式宣告型別一致,除了None,int, long, Byte String,Unicode String,不能直接用Python資料型別,必須轉換
import ctypes
dll = ctypes.CDLL("msvcrt.dll")
dll.printf(b"hello world")
report = ctypes.CDLL("FastReport.dll")
report.Report()
report.Load("bq.frx")
report.Show()
uj5u.com熱心網友回復:
那你為什么不看看別人怎么調的?
看了啊,同樣的代碼我這里就用不了,查到的方法都試了,還是不行
你知道 FastReport.dll 里的函式定義嗎?是純C語言嗎
謝謝提醒,fastreport.dll是c#型別的dll,用pythonnet 里面的clr的方法比較多。但是我這個clr也不好使,還是報錯:ImportError: No module named 'FastReport'
而且,我試了你說的第二種方法,里面沒有 from FastReport import *這句話,沒有引入,里面的Report不能用
uj5u.com熱心網友回復:
這樣試試呢?
使用時,引數要與C函式宣告型別一致,除了None,int, long, Byte String,Unicode String,不能直接用Python資料型別,必須轉換
import ctypes
dll = ctypes.CDLL("msvcrt.dll")
dll.printf(b"hello world")
report = ctypes.CDLL("FastReport.dll")
report.Report()
report.Load("bq.frx")
report.Show()
我那個printf是能用的,例子放在前面是想證明我的環境應該沒有問題
uj5u.com熱心網友回復:
[/code]
我那個printf是能用的,例子放在前面是想證明我的環境應該沒有問題
from FastReport import *
這句肯定不對,環境里沒有FastReport 這個模塊。你確定別人使用方法和你一模一樣?
uj5u.com熱心網友回復:
[/code]
我那個printf是能用的,例子放在前面是想證明我的環境應該沒有問題
from FastReport import *
這句肯定不對,環境里沒有FastReport 這個模塊。你確定別人使用方法和你一模一樣?
嗯嗯,確定,fastreport.dll我是拷到了.py相同目錄下。肯定是有的,但是我之前一直用的下面的例子,總是匯入DLL不成功,就在剛才又試了一次竟然成功了,但是報下面這個錯,

這個鏈接提到的行程在我這里不管用。https://blog.csdn.net/zhuoyue008/article/details/82178182
謝謝朋友,你是我的lucky star!
下面就是去解決dragDrop注冊失敗的問題了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102364.html
上一篇:如何讓simulink的subsystem的in與out自動與模塊名一致? 將仿真的子電路封裝成subsystem的時候如何將輸入輸出自動匹配成自定義的信號名
