将字符串数组从 C# 应用程序传递到C++ DLL
Passing Array of string from C# application to C++ DLL
string []URL = {"www.facebook.com","www.orkut.com","www.yahoo.com"};
Int32 result = URL.Length;
SetPolicyURL( URL,result );
这是我的 C# 代码,我正在尝试将字符串数组传递给像这样导入C++ Dll
[PreserveSig]
[DllImport("PawCtrl.dll", SetLastError = true, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void SetPolicyURL( string []policy, Int32 noURL);
但我无法在我的 C++ DLL 中接收它。
PAWCTRL_API void __stdcall SetPolicyURL( char ** URLpolicy, __int32 noURL)
{
for ( int i = 0; i < noURL; i++)
{
URLvector.push_back(URLpolicy[i]);
}
}
请任何人都可以帮我如何传递函数
谢谢提前
CharSet = CharSet.Auto 是错误的,它必须是 CharSet.Ansi 才能与本机代码中的 char* 兼容。 使用启用了非托管调试的调试器 如果仍有问题,请在函数的第一个语句上设置断点。
也去掉[PreserveSig],它在这里没有任何意义。 SetLastError 很可能是错误的,这仅在 Windows api 函数上很常见。
将字符串数组从 VB.Net 传递到 C 的示例。 与 32 位和 64 位兼容。
VB.Net:
Private Declare Function main_net32 Lib "MyCLib32.dll" Alias "_main_net@8" (ByVal argc As Int32, ByRef sArgs() As String) As Int32
Private Declare Function main_net64 Lib "MyCLib64.dll" Alias "main_net" (ByVal argc As Int32, ByRef sArgs() As String) As Int32
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
Dim sArgs() As String = Environment.GetCommandLineArgs
Dim result As Int32
If Environment.Is64BitProcess Then
result = main_net64(sArgs.Length, sArgs)
Else
result = main_net32(sArgs.Length, sArgs)
End If
End Sub
三:
#define DllExport(result) __declspec(dllexport) result __stdcall
DllExport(int) main_net(int argc, char ***argv)
{
int i;
for(i=0;i<argc;i++)
printf("%d: %s",i,(*argv)[i]);
}
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- C++:将外部库链接到dll库
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 不同的Visual Studio版本中缺少.dll
- 从DLL中删除类的实例
- 如何包装第三方DLL在R中使用
- 使用c#访问c++dll中带有char*参数的函数时发生AccessViolationException
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- Python ctypes:不会按预期加载 dll
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL