我有一個C++ DLL,從C#控制檯應用程序被調用如下所示。從VS中的C#調用C++ DLL失敗。在VS之外運行EXE,它工作
當在Visual Studio中運行以調試它時,它會拋出一個異常說明堆棧不穩定並檢查方法參數是否正確。但是,如果我從Windows資源管理器的VS之外運行* .exe,則會按預期方式將數據返回到屏幕。
我怎樣才能讓它在Visual Studio中運行?
感謝
**From the C++ header file:**
#ifdef RFIDSVRCONNECT_EXPORTS
#define RFID_CONN_API __declspec(dllexport)
#else
#define RFID_CONN_API __declspec(dllimport)
#endif
RFID_CONN_API BSTR rscListDevices(long showall) ;
[DllImport("MyDLL.dll")]
[return: MarshalAs(UnmanagedType.BStr)]
public static extern string rscListDevices(int showall);
static void Main(string[] args)
{
string data= rscListDevices(0);
Console.WriteLine(data);
Console.ReadKey();
}
C/C++頭文件中的正確方法簽名是什麼?問題可能是您的P/Invoke簽名不正確。 – Ben
RFID_CONN_API BSTR rscListDevices(long showall); – Jon
RFID_CONN_API是如何定義的? –