小编Dav*_*tts的帖子

PInvoke lmdif1签名

我试图从c#中的pinminoke cminpack_dll.dll中的lmdif1方法,我遇到了一些奇怪的错误.

传递给lmdif1的第二个和第三个参数是整数,对于我的测试,顺序中的值是12和9.现在当它们在C代码中时,12的值现在是9而9的值在308000之间变化和912000.不知道为什么.

首先,我想知道我使用的签名是否有效

C#签名:

[DllImport("cminpack_dll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int lmdif1(IntPtr fcn, int m, int n, double[] x, double[] fVec, double tol, int[] iwa, double[] wa, int lwa);
Run Code Online (Sandbox Code Playgroud)

C签名:

int __cminpack_func__(lmdif1)(__cminpack_decl_fcn_mn__ void *p, int m, int n, real *x, 
real *fvec, real tol, int *iwa, 
real *wa, int lwa)
Run Code Online (Sandbox Code Playgroud)

我称之为:

//All of the variables passed in match the types in C# signature above.
var info =lmdif1(
            functionPointer,
            pointsetLength,
            initialGuessLength,
            initialGuess,
            fVec,
            tol,
            iwa,
            wa,
            lwa);
Run Code Online (Sandbox Code Playgroud)

现在这是我第一次与PInvoke打交道,而我的C并不好,之前从未真正做过,所以任何帮助都会很棒.我怀疑我可能需要制造一些东西,但我已经尝试过将I4和U4作为整体进行编组,它仍然会做同样的事情.

为你的帮助提前干杯. …

c c# pinvoke interop

6
推荐指数
1
解决办法
168
查看次数

如何在Frame.GoBack()上获取有关上一页的信息

假设我们有一些PagePageA,并且我有一个按钮,当单击时,执行以下操作:

Frame.NavigateTo(typeof(PageB));
Run Code Online (Sandbox Code Playgroud)

在用户完成操作后,他从PageB导航回到PageA调用 Frame.GoBack()

我希望能够确定我是从PageB导航回来的

我可以用:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    e.NavigationMode
}
Run Code Online (Sandbox Code Playgroud)

但这只能告诉我,我正在航行,而不是我从PageB回来.

这甚至是一个很好的Windows-phone-guidelines方法(在文档中没有找到这个特殊情况)?

c# navigation windows-phone-8.1

1
推荐指数
1
解决办法
521
查看次数

标签 统计

c# ×2

c ×1

interop ×1

navigation ×1

pinvoke ×1

windows-phone-8.1 ×1