我编写了以下 C++
代码来创建win 32 Dynamic link library
:
#include <windows.h>
#include <some.h>
unsigned char m_KSN[10];
unsigned char m_inintial_key[16];
unsigned char initial_key[16];
extern "C" __declspec(dllexport) unsigned char* OnDecryption(LPCTSTR stringKSN,
LPCTSTR BDK){
for( i=0;i<10;i++){
m_KSN[i]=asctohex(stringKSN[2*i],stringKSN[2*i+1]); }
for( i=0;i<16;i++){
m_inintial_key[i]=asctohex(BDK[2*i],BDK[2*i+1]);}
GetInitalKey(m_KSN, m_inintial_key, initial_key);
// GetInitialKey function written in `.lib` file. Data type of (Byte*a Byte* b Byte* c)
return initial_key;
}
C#
我的代码在哪里:
static class DecryptionDll
{
public String BDK = "0111111119ABCDEFFEDCBA9877777777";
public String KSN = "62994900380000C00329";
internal static class UnsafeNativeMethods
{
const string _dllLocation = "finalTest.dll";
[DllImport(_dllLocation)]
public static extern byte OnDecryption(string ksn, String bdk);
}
}
我将dll
文件放在当前目录中,我通过以下命令得到:
String path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.
GetExecutingAssembly().Location);
它向我显示my debug
文件夹是当前路径。所以我把它dll
放在那里。我也收到了很多帖子,但无法理解PInvoke
情况。请帮我..
请告诉我我应该做些什么更改c++
或c#
代码来调用编写的方法dll
。
我对这么多的编辑感到非常抱歉。这是因为我的连接速度慢