2012-10-26 151 views
0

我有一個C++項目,它使用DLL和LIB文件附帶的API以及頭文件。 我想創建一個win32表單項目。C++ API DLL項目

我的問題是如何鏈接項目與dll和lib文件。

但主要問題是,我如何訂閱活動? 在API中,我可以調用函數,該函數返回的是事件響應,在MFC項目中我通常會在消息循環中進行訂閱。但是在Win32中沒有消息循環。

也許我自己使情況複雜化,比我想象的要容易。 請爲我澄清這種情況。

謝謝。

+0

當你直接使用Win32 API,它是由你來創建自己的消息循環。 –

+0

我該怎麼做?我將如何確保我從API調用的函數獲得「事件」響應? –

+0

也許我應該備份:你是否在這個程序中創建任何實際的窗口,或者它是一個控制檯程序? –

回答

2

當有人提出多個問題時,總是很難回答......如果您的「主要問題」出現,請顯示訂閱事件的相關API調用。你錯了Win32中沒有消息循環......只是沒有MFC消息循環。

我回答了現在的簡單問題......「你如何鏈接DLL」。我有點假設你正在使用Visual Studio。那是對的嗎?我這樣做,當我匆忙的方式是這樣的:

#include "mylib.h" 
#pragma comment(lib, "mylib.lib") 

這就是它的全部。當然我想要標題,但是當我在它的時候,我告訴編譯器鏈接庫。

我似乎回想起其他時間,我只是簡單地將庫文件拖到項目的解決方案視圖中,有效地將其添加爲源。這也是有效的。

長的方法是編輯您的項目設置,轉到鏈接部分,並根據輸入小節中,您將庫添加到附加依賴​​名單。您需要爲所有配置執行此操作。有很多方法可以很好地保持這一點,但我不會在這裏進行討論。

如果您沒有使用Visual Studio,請忽略我的答案。

+0

「快點」!永遠不要通讀所有的雜注。 – xtofl

+0

我正在使用Visual Studio。 函數調用的一個例子是: void SubScribL1Quotes(char * psymbol,BOOL bSubScrib); 及其響應爲: virtual int OnLv2Quote(st_L2Quote * pst); 我如何獲得此回覆? 謝謝。 –

+0

這是非常神祕的...如果它使用Windows消息循環,那麼至少會採用'HWND',我想。你忽略了什麼?例如,是否有可以在API中設置的事件回調函數?或者,API是否創建對象?我看到'迴應'是一個虛擬功能。推測是你可以覆蓋的東西... – paddy

1

你不能用dll文件的項目鏈接,你可以用的lib文件鏈接你的項目,你可以在你的項目設置對話框中添加庫文件名(鏈接)

或者,您添加到您的代碼

#pragma comment(lib,"xxxx.lib") 

Dll文件將在運行時加載。

對於消息循環,見http://msdn.microsoft.com/en-us/library/windows/desktop/ms644928(v=vs.85).aspx

或者這樣:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996(v=vs.85).aspx#modeless_box