[問題] 匯入c++寫的dll檔
請問各位我要把c++寫成的dll檔在c#中使用
可是一直遇到 "找不到名稱為 fnLibEncrypt 的進入點 (在 DLL LibEncrypt.dll 中)"的
問題
後來我直接開一個專 c++的專案 用最簡單的方式來測試可是問題還是一樣
我在本站及各大網站上看到的方法都大同小異,可是我試了以後還是不行
可以麻煩各位幫我看一下嘛
//******************* LibEncrypt.h *******************
#define LIBENCRYPT_API __declspec(dllexport)
/*
#ifdef LIBENCRYPT_EXPORTS
#define LIBENCRYPT_API __declspec(dllexport)
#else
#define LIBENCRYPT_API __declspec(dllimport)
#endif
*/
// 這個類別是從 LibEncrypt.dll 匯出的
class LIBENCRYPT_API CLibEncrypt
{
public:
CLibEncrypt(void);
};
extern LIBENCRYPT_API int nLibEncrypt;
LIBENCRYPT_API int fnLibEncrypt(void);
//******************* LibEncrypt.cpp *******************
// LibEncrypt.cpp : 定義 DLL 應用程式的進入點。
#include "stdafx.h"
#include "LibEncrypt.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// 這是匯出變數的範例
LIBENCRYPT_API int nLibEncrypt=0;
// 這是匯出函式的範例。
LIBENCRYPT_API int fnLibEncrypt(void)
{
return 42;
}
// 這是已匯出之類別的建構函式。
// 該類別的定義請參閱 LibEncrypt.h
CLibEncrypt::CLibEncrypt()
{
return;
}
//******************* C#裡頭的使用 *******************
[DllImport(
"LibEncrypt.dll",EntryPoint="fnLibEncrypt",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]
public static extern int fnLibEncrypt();
private void BtnOK_Click(object sender, System.EventArgs e)
{
int a = fnLibEncrypt();
bCheck = true;
this.Close();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.220.110.100
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章