我是一個C++ dll文件,一個lib
文件和一個頭文件。我需要從我的C#應用程序中調用它們。C#調用C++ DLL獲取EntryPointNotFoundException
頭文件是這樣的:
class Clog ;
class EXPORT_MACRO NB_DPSM
{
private:
string sFileNameToAnalyze ;
Clog *pLog ;
void write2log(string text) ;
public:
NB_DPSM(void);
~NB_DPSM(void);
void setFileNameToAnalyze(string FileNameToAnalyze) ;
int WriteGenbenchData(string& message) ;
};
在我的C#代碼,我有那些代碼:
internal ReturnStatus correctDataDLL(string rawDataFileName)
{
if (rawDataFileName == null || rawDataFileName.Length <= 0)
{
return ReturnStatus.Return_CannotFindFile;
}
else
{
setFileNameToAnalyze(rawDataFileName);
}
string msg = "";
int returnVal = WriteGenbenchData(ref msg);
return ReturnStatus.Return_Success;
}
[DllImport("..\\..\\thirdParty\\cogs\\NB_DPSM.dll")]
public static extern void setFileNameToAnalyze(string fileName);
[DllImport("..\\..\\thirdParty\\cogs\\NB_DPSM.dll")]
public static extern int WriteGenbenchData(ref string message);
我在setFileNameToAnalyze(rawDataFileName);
說法得到了EntryPointNotFoundException
。
幾個問題:
,我需要的是
lib
文件添加到我的C#項目的地方?怎麼樣?我需要將頭文件添加到我的C#項目嗎?怎麼樣? (目前沒有編譯錯誤)
我想刪除那些
"..\\..\\thirdParty\\cogs\\"
硬編碼路徑。如何做到這一點?如何搭乘那個
EntryPointNotFoundException
?
感謝,
爲什麼需要「extern」C「{}」塊? – 5YrsLaterDBA 2010-06-17 19:56:45
@ 5YrsLaterDBA:防止[name mangling](http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B)。 – SLaks 2010-06-17 20:23:30