2012-03-13 156 views
0

我在CMake中有一個正在發展的項目。現在是時候鏈接到一個圖書館,目前這種圖書館只存在於Windows中,Linux的功能將不得不等待。我試圖用預處理指令要做到這一點作爲一個答案建議this question在CMake項目中包含Windows庫

// MyLibHeader.hpp 
#ifdef WIN32 
#include <windows.h> 
#define ProcHandle HINSTANCE 
#define LoadLib LoadLibraryA 
#define LoadSym GetProcAddress 
#else 
// ... I'll fill these in with dlopen etc. when necessary 

這是第一個平臺具體包括我不得不把我的代碼,它似乎還有更多的東西比這。這是產生此錯誤:

C:\Program Files (x86)\Microsoft Visual Studio 8\VC\include\intrin.h(944) : error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed

錯誤重複四次,in intrin.h兩次,winnt.h兩次。所以這是我的問題。是否有其他包含或預處理器步驟,我需要採取這些步驟在Windows內部工作(到目前爲止它已經是一個基本的控制檯應用程序),並且我可以利用CMake中的某些東西來簡化它。

回答

1

從我已經能夠有一些幫助,一些谷歌來湊了上來,一個解決方案確實是註釋掉的_interlockedbittestandset重複定義,initrin.h

這可能是固定在Visual Studio中的更高版本。

+0

我必須說,我發現自己喜歡這麼兩輪牛車。 – 2NinerRomeo 2012-03-13 17:25:46

+0

那個黑客確實成功了。 – 2NinerRomeo 2012-03-16 15:26:17

+0

一個這樣的討論在這裏進行了編目:http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/61b5becd-90f9-40a4-b545-5f171fe45daa – 2NinerRomeo 2012-03-16 15:27:24