cocos2dx 3.10 Win32和Android引用libcurl庫路徑問題

cocos2dx 對於一些第三方庫的引用路徑上很多都不太明確,導致初學者挖坑不斷,我之前玩的最後一個版本是3.6結果代碼移植到3.10又各種編譯不過,真是太蛋疼。典型的就是

libcurl庫引用的問題

先說WIN32上,千萬要注意路徑問題,還有lib文件路徑都得準確,爲了避免以後移植麻煩,不要對WIN32工程改動包含庫目錄這個功能,在代碼裏這麼引用纔是正確的姿勢

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	#include "curl/include/win32/curl/curl.h"//頭文件位置
	#pragma comment(lib,"libcurl_imp.lib")//動態鏈接庫位置
#endif

再說最關鍵的Android上,Android.mk上要特別注意在最後面加上

$(call import-module,./curl/prebuilt/android)這句表示引入這個模塊,至於路徑爲什麼這麼寫,因爲從cocos studio的默認ndk編譯參數爲:

NDK_MODULE_PATH=C:\Cocos\cocos2d-x/cocos2d-x-3.10;C:\Cocos\cocos2d-x/cocos2d-x-3.10/cocos;C:\Cocos\cocos2d-x/cocos2d-x-3.10/external 

所以也就代表着從上面三個目錄裏尋找你要加載模塊的.mk文件的目錄,代碼裏應該#include "curl/curl.h"

所以代碼裏最終是如下這樣的姿勢:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
	#include "curl/include/win32/curl/curl.h"//頭文件位置
	#pragma comment(lib,"libcurl_imp.lib")//動態鏈接庫位置
#else if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "curl/curl.h"//頭文件位置
#endif

mk文件是這樣設置的

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

define walk
	$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(filter %.cpp, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_STATIC_LIBRARIES := cocos2dx_static

include $(BUILD_SHARED_LIBRARY)




$(call import-module,./prebuilt-mk)
$(call import-module,./curl/prebuilt/android)








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章