Gia*_*awa 5 c# c++ dll pinvoke
下午好,
我一直在研究一个可以使用CORBA与网络感知的应用程序通信的DLL.如果我将它作为C++控制台应用程序运行,代码工作正常.但是,我已经停止将方法导出为dll.这些方法似乎输出正常,如果我调用一个没有参数的方法,那么它按预期工作.我挂了把C#字符串传递给C++方法.
我的C++方法标题如下所示:
bool __declspec(dllexport) SpiceStart(char* installPath)
Run Code Online (Sandbox Code Playgroud)
我的C#DLL导入代码如下:
[DllImportAttribute("SchemSipc.dll", CharSet=CharSet.Ansi)]
private static extern bool SpiceStart(string installPath);
Run Code Online (Sandbox Code Playgroud)
我这样称呼方法:
bool success = SpiceStart(@"c:\sedatools");
Run Code Online (Sandbox Code Playgroud)
对SpiceStart的调用抛出异常"PInvokeStackImbalance","很可能是因为托管的PInvoke签名与非托管目标签名不匹配".
有没有人有什么建议?如果我从参数中删除char*和字符串,那么该方法运行正常.但是,我希望能够将应用程序的安装路径从C#传递给dll.
提前致谢,
Giawa
zum*_*ard 10
调用约定不匹配.在C++中,使用stdcall调用约定声明该函数:
extern"C"bool __declspec(dllexport)__ stdcall SpiceStart(char*installPath)
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |