2016-11-21 2 views
0

Ich versuche, ein großes Windows Forms-Programm auf Linux zu portieren und diese Fehlermeldung erhalten:Wie NativeMethods.GetUpdateRect auf Mono auf Lubuntu 16.04.1 verwenden?

System.EntryPointNotFoundException: GetUpdateRect 
    at (wrapper managed-to-native) 
CDBurnerXP.Controls.NativeMethods:GetUpdateRectInternal 
(intptr,System.Drawing.Rectangle&,bool) 
at CDBurnerXP.Controls.NativeMethods.GetUpdateRect 
(System.Windows.Forms.Control cntl) [0x0000f] in 
<ce4ca0f630654e4c8c1f96509f1eae82>:0 

Gibt es eine Möglichkeit C# Anrufe
Native zu unterstützen: GetUpdateRect Mittag Mono auf Lubuntu 16.04.1?


Edit:
Danke, knocte, für Ihren Kommentar. Diese Änderung ist das Stück Code zu zitieren, die diese Funktion zu verweisen versucht (weil Kommentare erlauben keine Formatierung):

[DllImport("user32.dll", EntryPoint = "GetUpdateRect", CharSet = CharSet.Auto)] 
private static extern IntPtr GetUpdateRectInternal(IntPtr hWnd, ref Rectangle r, bool eraseBackground); 
+0

Wenn Ihr Windows Forms-Programm native P/Invokes verwendet, ist es bereits ein nicht-plattformübergreifendes Programm, das von Windows-Systemaufrufen abhängt – knocte

+0

Danke, nocte, aber ich bin zu neu für diese Szene, um sicher zu sein, dass ich Sie richtig verstehe. Ich habe den Bitcode hinzugefügt, der versucht, GetUpdateRect auf meine ursprüngliche Frage zu verweisen, damit der Codeabschnitt richtig formatiert werden kann. – JimH44

+0

Ja, das Programm wurde nicht für den plattformübergreifenden Einsatz entwickelt - nur unter Windows. Also ich denke, ich frage, ob jemand weiß, ob es etwas in Mono unter Linux gibt, was GetUpdateRect unter Windows tun würde. Oder irgendeine Tabelle von Korrelationen zwischen Funktionen unter Windows und ihren Entsprechungen unter Linux. Nochmals vielen Dank, dass Sie über diese Fragen nachgedacht haben. Ich halte hartnäckig, weil Ketarin ein so nützliches Programm ist und ich gerne nativ auf Linux laufen könnte. (Früher hat es über WINE funktioniert, aber etwas ist kaputt gegangen, und ich konnte es nicht beheben.) – JimH44

Antwort

0

Nun, die Antwort ist, dass ich die falsche Frage stellt.
Ich hätte fragen sollen "Wie kann ich ObjectListView.cs ersetzen, die von nicht-portablen Windows-Systemaufrufen abhängt, um dieses Programm auf Mono unter Linux zu portieren?"

ObjectListView scheint unter Windows sehr gut zu funktionieren, ist aber nicht mit Linux- oder Mac-Systemen kompatibel. Es gibt eine sehr gute Diskussion in der ObjectListView discussion board. Der Kommentar von Steve Hiner (2015-11-29) hat die Richtung meiner Suche geändert. Steves Ansatz ist: "Ich habe bereits einen Proxy erstellt, der OLV unter Windows und die Bestandslistenansicht unter Linux und Mac verwendet. Das wäre eine Möglichkeit, wie OLV Pseudomono-Unterstützung bieten könnte, es könnte einfach die Bestandslistenansicht ohne irgendwelche ausgefallenen Funktionen verwenden."

Danke, knocte, um mich in die richtige Richtung zu denken.