我试图从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作为整体进行编组,它仍然会做同样的事情.
为你的帮助提前干杯. …
假设我们有一些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方法(在文档中没有找到这个特殊情况)?