有一個C-Funktion我用作DLL。該功能通過輸出Testand - 使用C#封裝器使用C DLL的C#DLL的使用
__declspec(dllexport) uint8_t *SomeFunction(uint8_t *a);
在各自的頭文件中。
的包裝進口函數
[DllImport("SomeCFunction.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "SomeFunction")]
private static extern IntPtr SomeFunction(Byte[] array1);
的包裝與它包含的功能
public unsafe Byte[] SomeFunction(Byte[] array1, Byte[] array2)
{
IntPtr parray2 = CalculateKeyFromSeed(array1);
}
現在我執行在TestStand的步驟時,你得到錯誤的調用方法:
調用.NET成員內部發生異常 'SomeFunct離子':System.BadImageFormatException:Es wurde versucht,eine Datei mit einem falschen格式zu載入中。 (Ausnahme馮 HRESULT:0x8007000B)貝 SomeFunctionWrapperNameSpace.WrapperClass.SomeFunction(字節[] ARRAY1)貝 WrapperNameSpace.WrapperClass.SomeFunction(字節[] ARRAY1,字節[]數組2)中 SomeFunctionWrapper.cs:Zeile 33 。貝SomeFunction(字節[]數組1,字節[]數組2)在 SomeFunction.cs:Zeile 39
一些想法,我怎麼弄的TestStand接受這個DLL嗎?
檢查位,是dll 64位?是C#DLL 64位?那麼TestStand過程呢? –
你是對的!我的TestStand版本是64位的。在VS2010中的C-DLL項目的屬性中,配置管理器只允許32位xor 64位。所以我必須改爲64位。另一個問題是,我在TestStand中使用的C#dll沒有設置在「任何CPU」上,但是我的Wrapper C#DLL是。 FAZIT:在「任何CPU」上設置所有C#Dll,在你的TestStand版本上設置C-Dll。 – Christian
那我就把它當成答案! –