在將谷歌的protobuf數據格式運用到vs2013中時,遇到error LNK1104: 無法打開文件“libprotocd.lib”文件,但之前添加過protobuf編譯的文件到vs的附加文件目錄中去了,分析原因應該是庫文件的路徑沒有添加進去,整理網上的回答,希望可以減少踩坑。
1.問題描述
項目工程中需要用到谷歌的protobuf進行數據通信,在網上下載了protobuf源碼,進行cmake編譯,並將編譯和安裝後的文件添加到項目工程中,但是仍然出現以下問題:
但是在之前的配置中卻已經將protobuf編譯後的文件加入到屬性配置中,如下圖所示:
在編譯之後仍然出現問題。
2. 問題分析
首先,確認是否能夠找到這個文件,如果是cmake對protobuf編譯失敗可能沒有這個文件,當然,這裏是在編譯之後的debug目錄下是能找到的;那麼有可能是該庫文件沒有添加到工程中,或者路徑添加有問題,這裏最後確認是因爲庫文件的路徑沒有添加進去,導致工程項目找不到該文件。
3.解決辦法
瞭解到原因後,解決方式就是需要將對應的文件路徑添加到依賴中去,其詳細步驟如下:
步驟1:定位報error LNK1104: 無法打開文件“libprotocd.lib”,找到它所在的目錄,可以在protobuf\cmake\build\debug目錄下找到該文件。
步驟2:添加該項目的附加路徑 。
右鍵項目屬性——>VC++目錄——>庫目錄,然後將剛剛找到的文件的路徑添加進去即可。
步驟3:重新編譯生成,問題可以得到有效解決。