2016-02-05 189 views
2

我對C++相當陌生,我在Java中編寫了幾年。大約一個星期前,我嘗試讓Boost庫與Codeblocks一起工作,並在錯誤發生後出錯。我已經設法修復其中的大部分,但是這一個讓我感覺很糟糕。編譯時我的代碼返回兩個錯誤:C++權限被拒絕錯誤

ld.exe ||找不到C:\ boost_1_60_0 \ stage \ lib:Permission denied |

|| error:ld returned 1 exit status |

我根本無法弄清楚如何解決這個問題,我一直在網上尋找幫助的日子。從我已經弄清楚的情況來看,拒絕錯誤的權限是由於(錯誤提示)沒有訪問目錄的權限,但我在網上找到的修復程序都沒有工作。

這是我的代碼,雖然我不認爲代碼與錯誤有關。

#include "complex.h" 
#include <cmath> 
using namespace csis3700; 

#define BOOST_TEST_MODULE ComplexTests 
#define BOOST_TEST_DYN_LINK 

#include <boost/test/unit_test.hpp> 

const double tol = 0.01; 

BOOST_AUTO_TEST_CASE(zero_arg_constructor_should_not_crash) { 
    complex c; 
} 

複雜類只是一個模擬複數的類,現在它只是一個空構造函數。

生成設置:

enter image description here

+0

也許您以管理員身份安裝了Boost,並且您的普通用戶無權訪問該目錄或其內容。你可以看看'C:\ boost_1_60_0 \ stage \ lib'目錄中的內容與試圖構建程序的用戶嗎? – Paulo1205

+0

是的,我可以查看C:\ boost_1_60_0 \ stage \ lib的全部內容。 – Sova

+0

我以爲編譯器(鏈接器)是由用戶運行的,他們沒有權限訪問這些目錄,這可能會導致錯誤。你能告訴我們這個目錄有什麼權限(例如通過運行'ls -l'命令)。 –

回答

0

你的搜索目錄不包括該文件夾。仔細檢查您的搜索目錄選項卡是否填充了「C:\ boost_1_60_0 \ stage \ lib」,或者如果您正在使用環境變量,那麼它在此處設置並鏈接正確。

此外,該錯誤具體是因爲您正在尋找boost.lib作爲文件而不是目錄。從當前的鏈接器設置中移除它,並在搜索目錄 - >鏈接器選項卡下移動它可以解決錯誤。