2013-08-07 98 views
1

我一直在Google上搜索幾天,而且似乎無法繞開這個問題。使用C++ - 導出的函數

我有一個標題,它將一些函數導出到一個庫中。此文件被稱爲test_extern.h,函數如下:

__declspec(dllexport) int aFunction(int a, int b); 

我有其他兩個文件,一個的.h和.cpp其計算與導出文件的幫助下一些事情。我已經刪除了版本以顯示我想要做的事情。

A.H文件:

// Include CBaseDILI_J1939 header file. 
class A : public CBaseDILI_J1939 
{ 
public: 
    int bFunction(int a, int b); 
} 

A.cpp文件:

#include "test_extern.h" 
#include "A.h" 

int A::bFunction(int a, int b) { 
    return aFunction(a, b); // REturn the value of the exported function! 
} 

現在,當我運行它,我得到 「錯誤LNK2019:解析外部符號_ 小鬼 _aFunction」。

我已閱讀並閱讀所有關於導出dll的信息,有沒有人知道我可能會做錯什麼?

+0

您在運行鏈接器時指定了哪些庫文件? –

+0

我不添加任何額外的連接器。我必須這樣做嗎?我只是假設鏈接器會找到它 – Pphoenix

+0

因此,A是否在與函數不同的項目中?在這種情況下,標題中的聲明是不夠的。你有沒有lib的DLL或不? – doctorlove

回答

2

你必須在調用模塊中聲明dll函數爲dllspec(dllimport)。

+0

非常感謝!哈哈,這麼簡單,但卻很難找到! – Pphoenix

2

@Karadur是對的。

檢查此鏈接上的示例:http://msdn.microsoft.com/en-us/library/799kze2z.aspx。 答案在本頁底部。

在A.cpp中將此添加到頂部。

__declspec(dllimport) int aFunction(int a, int b);

+0

謝謝!這非常有幫助! – Pphoenix

+0

不要忘記檢查MSDN,你會發現很多有用的Windows開發文章。儘管我不喜歡MS,並且我沒有在他們的平臺上開發很多。他們的支持是迄今爲止最好的... – ipinak