C++,C#双面手请进,CLI\C++ 调用C# library 方法
近在做一个项目,需要加解密,算法是用C#写的, 然后用C++及CLI\C++以Mixed Mode写一个DLL,这个DLL最终是要被纯C++调用的,调用的人完全不懂C#。
C#做的加解密大致是
C#:
public class Encryptor{
public:
Encryptor(string keyIV);
bool Encrypt(string sourcefile, string destfile) {
...
}
bool Decrypt(string sourcefile, string destfile) {
...
}
}
C++CLI写的DLL是这样的:
BOOL EncryptWrapper::EncryptWrapper(LPCWSTR lpszSourceFile, LPCWSTR lpszDestFile) {
BOOL ret = FALSE;
string^ source = gcnew String(lpszSourceFile);
string^ des = gcnew String(lpszDestFile);
Encryptor^ encryptor = gcnew Encryptor(m_keyIV);
encryptor->EncryptFile(source, des);
return ret;
}
编译的时候出现错误:
Error 5 error C2039: 'EncryptW' : is not a member of 'XXX::NetUtil::Encryptor'
我理解大致上错误就是Unicode的版本方法需要加W。
我的疑问就是为什么我调用系统类库,只要按msdn的方法不需要加W,或者A。自己编译的Class Library就会出现这类问题?
项目很急,急需大家帮忙。
C#做的加解密大致是
C#:
public class Encryptor{
public:
Encryptor(string keyIV);
bool Encrypt(string sourcefile, string destfile) {
...
}
bool Decrypt(string sourcefile, string destfile) {
...
}
}
C++CLI写的DLL是这样的:
BOOL EncryptWrapper::EncryptWrapper(LPCWSTR lpszSourceFile, LPCWSTR lpszDestFile) {
BOOL ret = FALSE;
string^ source = gcnew String(lpszSourceFile);
string^ des = gcnew String(lpszDestFile);
Encryptor^ encryptor = gcnew Encryptor(m_keyIV);
encryptor->EncryptFile(source, des);
return ret;
}
编译的时候出现错误:
Error 5 error C2039: 'EncryptW' : is not a member of 'XXX::NetUtil::Encryptor'
我理解大致上错误就是Unicode的版本方法需要加W。
我的疑问就是为什么我调用系统类库,只要按msdn的方法不需要加W,或者A。自己编译的Class Library就会出现这类问题?
项目很急,急需大家帮忙。
...全文
相关推荐
C++调用C#的DLL实例程序
使用C++/CLI调用C#方法:在C++/CLI代码中,引入C#命名空间,并创建对C#类的实例。然后,你可以像调用C++函数一样调用C#方法。
C++调用C#类库,通过C++/CLI(CLR)作为中间层进行桥接
如何通过C++/CLI(CLR)作为中间层桥接C++和C#。
C#通过C++/CLI间接调用NativeCPP类的DLL文件
由于`NativeCppClassWrapper`是托管的,C#代码可以直接引用和调用它的方法,进而间接调用原生C++的功能。
C#使用CLR调用C++的DLL库
**创建C# EXE应用** - 最后,创建一个C#控制台应用程序项目。在C#代码中,添加对C++ CLR类库的引用。然后,你可以像使用任何其他.NET类一样,实例化并调用C++/CLI类的方法。
C#调用C++的中间封装(CLR)
**定义接口**:在C++/CLI项目中,定义一个公共接口,这个接口将暴露给C#代码。接口应该包含C++类的方法和属性,这些方法和属性需要被C#调用。


.NET Framework
