- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
<分区>
我正在尝试从 C# 调用非托管 C++,但收到有关返回值的异常。异常:
System.Runtime.InteropServices.MarshalDirectiveException: 'Cannot marshal 'return value': Invalid managed/unmanaged type combination (Arrays can only be marshaled as LPArray, ByValArray, or SafeArray).'
我有一个类似的函数,在没有返回值 (void) 的情况下看起来一样,但没有任何问题。
我将 c++ 项目的平台(编译器)设置为 v100 (Visual Studio 2010) 并在 c# 项目中使用 .net 4.5。
c++ 项目创建了一个 lib+dll 文件,我将它们都放在了可执行文件夹中。
当我尝试在 C# 代码中将返回值替换为“String”时,异常转换为:
System.AccessViolationException: 'Attempted to read or write protected memory. This is often an indication that other memory is corrupt.'
当我删除返回值函数属性 ([return: MarshalAs(UnmanagedType.BStr)]
) 时,我收到以下异常:
System.Runtime.InteropServices.MarshalDirectiveException: 'Cannot marshal 'return value': Invalid managed/unmanaged type combination.'
当我执行以下组合时:删除返回值函数属性并将返回类型转换为字符串,应用程序将自行关闭而不会捕获任何异常。
C++代码
extern "C"
{
ExternalDll_API char* FuncA(char* projectId);
}
ExternalDll_API char* FuncA(char* projectId)
{
return "abc";
}
C#代码
[DllImport("ExternalDll.dll")]
[return: MarshalAs(UnmanagedType.BStr)]
public static extern char[] FuncA(string projectId);
var key = FuncA(projectId.ToString());
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!