2010-04-13 133 views
1

所以我對Qt很新,而且我剛從Qt的新手中繼承了一個項目。他本週不在這裏。我們使用的是Visual Studio 2008,並安裝了最新版本的Qt(4.6.2)。Qt moc失敗,沒有錯誤信息

該項目建立在我的同事的機器上,我可以從svn獲得項目並直接構建它。但在任何其他情況下,它拒絕在我的機器上構建,並且它爲什麼沒有給我太多解釋。即使我只是做一個'建立清潔',然後'建立'它不起作用。任何輕微的修改都會使其失敗。

當我試圖構建整個項目中,我得到的錯誤信息:

1> Moc'ing MatrixTypeInterface.h ... 1>商務部:無法創建 \ GeneratedFiles \調試\ moc_MatrixTypeInterface 。的.cpp; \ GeneratedFiles \調試\ moc_matrixtypeinterface.cpp 1>項目:錯誤PRJ0019:一個工具 從返回一個錯誤碼 「Moc'ing MatrixTypeInterface.h ...」

商務部工具沒有按不給任何形式的錯誤信息,爲什麼它不工作,我浪費了昨天大部分時間試圖找出原因。我得到了VS用來調用moc的命令,並且我自己進入了命令行。它沒有寫任何東西到屏幕上。

任何想法?

回答

1

我終於找到了答案。我的同事今天又回到了辦公室,我用他的機器上的生成日誌來獲得他的全部moc命令(大約4行)。除了最後,我們的moc命令基本上是相同的。他的命令結束於:

-o「。\ GeneratedFiles \ $(ConfigurationName)\ moc _ $(InputName)。。\ GeneratedFiles \調試\ moc_matrixtypeinterface.cpp」

; \ GeneratedFiles \ $(ConfigurationName)\ MOC _ $(InputName)的.cpp:CPP 「

-o

我的命令結束」

我檢查該文件的自定義生成步驟,並去除多餘的位,之後該文件編譯的罰款。我不知道如何或爲何QT決定在這額外的珍聞添加,但它沒有。

謝謝爲你的幫助傢伙。你有幾個人懷疑這是一個文件系統問題,並且在Windows文件名中不允許有分號。但我覺得根本原因是Qt創建了錯誤的構建字符串。

我接受我自己的答案,希望它能幫助別人。

1

這很可能是文件系統錯誤,您可能沒有「GeneratedFiles」文件夾或沒有正確的權限。

我遇到過不同版本的moc和插件使用「生成」或「生成文件」或「GeneratedFiles」文件夾的問題。檢查所有構建步驟的設置。

+0

所有的文件路徑都是正確的,並且所有的文件權限都是正確的。 昨天我對我的同事的項目檢查了我的所有項目/構建設置,但我找不到任何不同的東西。他今天不在,所以我不能重新檢查任何東西。 – 2010-04-13 17:16:43

0

其可能是您的.vcproj文件已損壞。我之前有過這個問題,因爲有不同版本的Qt和Qt VS插件最終導致我的.vcproj文件被破壞。有一段時間,我不得不手動修復.vcproj文件(My AdditionalDependencies =「...」這一行正在交換,並切斷了需要移動的各種頭文件,我手動修復了這些文件,需要移動)。

乾淨的Visual Studios + Qt + Qt插件的重新安裝最終解決了這個問題。檢查你的.vcproj文件,看看它是否有意義。

0

確定您的文件路徑在moc運行之前是否正確並存在?由於看起來相對路徑被提供給moc,我會發現它運行時moc的工作目錄是什麼。

您的.vcproj文件是如何生成的? qmake用過嗎?還是cmake?或者是從頭開始?

相關問題