2013-03-19 75 views
0

我用Python和PyEvolve編寫了一個GA。在此我使用win32com.client從另一個程序(「Gsa.ComAuto」結構工程程序)調用COM庫。遺傳算法工作正常,但在出現錯誤消息之後。該消息是R6025運行時間消息純虛擬功能調用引用gsa.exe。我不知道爲什麼這個消息出現可能是因爲我多次調用Com對象?Python和純虛函數錯誤

+1

你有沒有在你的python代碼中使用CoInitialize初始化COM? – azhrei 2013-03-19 00:16:15

+0

不,我沒有。我在開始導入win32com.client gsaAuto = win32com.client.Dispatch(「Gsa.ComAuto」)之後,我以不同的定義調用了多次gsaAuto。不幸的是,我不知道CoInitialize是什麼,你能解釋一下嗎?非常感謝tou – mattek 2013-03-19 01:03:18

回答

2

試試這個:

import win32com.client 
win32com.client.pythoncom.CoInitialize() 

這將initialize your thread for using COM

+0

非常感謝。我明天會嘗試,我希望它能奏效。明天我會公佈結果。再次感謝你。 – mattek 2013-03-19 01:35:08

+0

也許這是一個愚蠢的問題,但我必須把win32com.client.pythoncom.CoInitialize()放在每個使用COM對象的定義中,或者只放在主定義中? – mattek 2013-03-19 15:18:48

+0

你需要爲任何線程調用它,只需要調用一次。所以,通常在模塊的頂部是好的,但是如果你正在創建自己的線程,他們也需要儘早初始化。 – azhrei 2013-03-20 04:39:12