pinvoke

    0熱度

    1回答

    考慮爲WINAPI功能的以下單元測試: public class WinApiTest { [TestMethod] public void WinApiFindFormTest_SimpleNesting() { var form = new Form(); form.Text = @"My form"; var button =

    0熱度

    2回答

    我編碼CryptoPP的包裝,其將通過C#應用程序中使用。 我的問題是,當使用PInvoke在包裝中調用特定函數時,會引發異常「試圖讀取或寫入受保護的內存......」。 它們都被編譯爲x64。 現在..奇怪的部分是,如果我使用/ MTD或/ MDd運行時編譯我的包裝,調用不會失敗,一切正常。但將運行時更改爲/ MT或/ MD會引發上述異常。 我不能用我的客戶使用/ MTD或/ MDD公務選項,因

    1熱度

    2回答

    我打電話庫( 「wow64ext.dll」)的功能與此聲明 宣言C++庫: extern "C" __declspec(dllexport) DWORD64 __cdecl GetModuleHandle64(wchar_t* lpModuleName) 我在VB聲明。網方案是: 現在,當我通過 Dim ntqipHandle as Ulong = GetModuleHandle64("ntd

    0熱度

    1回答

    以下是從C++ typedef struct _FCV { unsigned long ulID; unsigned long ulVersion; unsigned long ulStatus; unsigned long ulSize; struct _FCV* pNext; } FCV; 我需要使用的PInvoke翻譯成C#結構,

    0熱度

    2回答

    我一直在這一整天陷入困境,但似乎至少使用緊湊框架從本機代碼調用一個C#方法,該方法的代碼爲返回一個字符串。 我見過有關從本地代碼傳遞數據到本地代碼的幾個例子,但沒有一個例子使用返回值。 我想要做的是有一個C#函數,返回一個字符串,這樣我就可以將它從C#拉回到C++,即從C++調用C#而不是其他方式。 String GetSomeString() { return "foo"; } // C#

    -3熱度

    1回答

    我希望有人能夠幫助我,我有我的應用程序代碼的方法如下有點讓我一個矩形 var windowPosition = NativeMethods.GetWindowRect(this._hwnd); return new Rect(windowPosition.Left, windowPosition.Top, windowPosition.Width, windowPosition.Height);

    -1熱度

    1回答

    我正在爲C#中的C庫開發一個跨平臺包裝器。這個庫存在不同的版本,並且它們的功能有所不同。 在包裝中我想啓用這些函數,如果它們可用的話。 在C使用它,對如何測試這些功能的文檔: http://jackaudio.org/api/group__WeakLinkage.html,即 if (jack_set_latency_callback) { jack_set_latency_callba

    0熱度

    2回答

    我的問題是這樣的:我在C#中編寫了一個dll,但是它是可見的,因此它可以被.NET應用程序引用或者作爲COM組件使用非.NET應用程序(Forms,VB6等)。 我想獲得調用可執行文件的屬性 - 即。產品名稱,版權等(如果右鍵單擊.EXE,選擇屬性並轉到「詳細信息」選項卡,您可以看到所有這些內容)。 我可以通過簡單地使用System.Windows.Forms.Application - Prod

    -2熱度

    1回答

    我想了解平臺調用。所以,我瞭解了很多概念,但我如何在c#中調用#define指令。 例子: 在C++側 我有這樣的: #define dont_care_how_you_invoke_me (ptr) 我已經試過這樣: [DllImport("mydll.dll")] static extern void dont_care_how_you_invoke_me(IntPtr ptr);

    5熱度

    1回答

    當通過P/Invoke通過顯式的64位.NET應用程序與64位本機庫進行交互時,DllImport屬性中的CallingConvention屬性會被有效忽略? 我問這個是因爲在「傳統」的x86你必須說明呼叫者或被叫方清理堆棧變量的方式(以及如何函數本身可能使用某些CPU寄存器等);但據我所知,x64只有一個約定,__fastcall(儘管最近增加了__vectorcall)。 因此,無論您爲Cal