![](/img/trans.png)
[英]How to call Python code (including third-party modules imported) from C++?
[英]Trouble including third-party code in my C++ application
我正在嘗試將一些網絡代碼包含到我的C ++應用程序中。 我下載了CSimpleSocket並將所有.h和.cpp文件復制到我的主文件所在的目錄中。 然后我嘗試包含其中一個標題,但是鏈接器只是阻止了一堆錯誤,例如:
和別的。 一切都在一個目錄中,所以我認為這不是問題所在。 我用來包含的代碼是#include "PassiveSocket.h"
。 我正在使用Dev-C ++,如果這有任何區別的話。 我不明白我做錯了什么,所以如果有人能幫助我,那就太好了。
如果這是一個非常愚蠢的問題,請原諒我,但我正在努力學習C ++,這並不容易。 謝謝你的幫助。
您收到此錯誤的原因是您的編譯器找不到與CSimpleSocket標頭對應的二進制文件。 就好像你寫的那樣
void someFunction(int someArg);
然后從未提供someFunction的實現。
要使用第三方庫,您需要兩件事:
獲得頭文件和庫文件后,需要將它們放在一個編譯器可以找到它們的位置。 這個地方將根據您的操作系統,環境變量和編譯器配置而有所不同。
現在它們在某個地方,編譯器可以找到它們,你需要告訴編譯器使用它們。 頭文件與#include命令一起使用,庫文件通過向編譯器提供參數來鏈接。
在幕后,Dev-C ++使用MinGW GNU GCC編譯器,它調用類似於g++ file1.cpp file2.cpp ... filen.cpp -o filename
,告訴程序g ++編譯一個名為“filename”的C ++可執行文件文件1到n。 還有其他標志可以添加到g ++中,例如告訴它在哪里搜索以及鏈接什么。
編譯時CSimpleSocket庫的名稱是“clsocket”,因此我們需要找到一種方法來配置Dev-C ++以將-lclsocket
添加到g++
命令中。 我不使用Dev-C ++,所以我不能幫助你,但你可能正在尋找“鏈接選項”或類似的編譯配置。 您還需要確保.lib和.h文件位於搜索路徑上,該路徑也應該可以在Dev-C ++中進行配置。
CSimpleSocket還提供了一個安裝程序,它應該自動創建.lib文件並將.lib和.h放在可以找到它們的位置,您應該考慮使用該安裝程序。
我認為這個答案的復雜性凸顯了C ++庫集成生態系統的糟糕狀態。 不幸的是,在編寫本文時,C ++中沒有“模塊”的概念。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.