我無法弄清楚哪裏有錯誤。我正在創建一個DLL,然後在C++控制檯程序(Windows 7,VS2008)中使用它。但是當我嘗試使用DLL函數時,我得到了LNK2019 unresolved external symbol
。C++導出和使用dll函數
首先是出口:
#ifndef __MyFuncWin32Header_h
#define __MyFuncWin32Header_h
#ifdef MyFuncLib_EXPORTS
# define MyFuncLib_EXPORT __declspec(dllexport)
# else
# define MyFuncLib_EXPORT __declspec(dllimport)
# endif
#endif
這是一個頭文件,然後我用:
#ifndef __cfd_MyFuncLibInterface_h__
#define __cfd_MyFuncLibInterface_h__
#include "MyFuncWin32Header.h"
#include ... //some other imports here
class MyFuncLib_EXPORT MyFuncLibInterface {
public:
MyFuncLibInterface();
~MyFuncLibInterface();
void myFunc(std::string param);
};
#endif
再有就是dllimport的控制檯程序,其中有包含在鏈接器的DLL - >一般 - >其他圖書館目錄:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
__declspec(dllimport) void myFunc(std::string param);
int main(int argc, const char* argv[])
{
std::string inputPar = "bla";
myFunc(inputPar); //this line produces the linker error
}
我想不通她怎麼了Ë;它必須是非常簡單和基本的東西。
不錯的答案;基本上我注意到了。另外,函數沒有被聲明爲靜態的,所以你需要一個類的實例來調用函數。 – 2011-04-14 21:35:20
我不太喜歡answear。我應該剝離#imports的Interface.h並定義並將其與控制檯項目一起使用?你能更具體些嗎? – 2011-04-15 07:24:22
@ inf.ig.sh:如果要使用控制檯項目中的類,則必須在控制檯項目中包含.h。控制檯項目需要看到聲明爲* dllimport *的類,以便它可以查找DLL中的實際實現。 – Erik 2011-04-15 07:33:41