作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事一个项目,该项目使 C# 与以前在 C++ 中创建的 DLL 进行交互。下面的代码显示了我如何导出我需要的功能:
extern "C" __declspec(dllexport) int iterateAndTest(int testSize, char* testHash){
CUDADLL dll;
int ret = dll.iterateAndTest(testSize, testHash);
return ret;
}
下面的代码显示了我如何在 C# 中声明该函数:
[DllImport("C:\\Users\\BrunoBraga\\Documents\\Visual Studio 2012\\Projects\\CUDADLL\\Debug\\CUDADLL.dll")]
public static extern int iterateAndTest(int testSize, string testHash);
问题是:dll 函数没有返回任何东西。事实上,dll 一旦被调用,就永远不会返回到 C#,程序就会结束。
我不确定我是否提供了正确的代码,但我想我缺少一些关于 dll 的东西。
抱歉延迟回复。有两个问题:1-当我创建对象时,我应该使用 new insted of just CUDADLL dll。我认为我可以做到这一点,因为没有新的我仍然能够访问内部字段。;
2-程序要在admin下运行,否则会出现一些crash;
再次感谢各位。
最佳答案
在你的 C++ 代码中插入 __stdcall
extern "C" __declspec(dllexport) __stdcall int iterateAndTest(int testSize, char* testHash);
在 C# 中
[DllImport("yourdll.dll", EntryPoint="iterateAndTest", CallingConvention=CallingConvention.StdCall)]
public static extern int iterateAndTest(int testSize, string testHash);
在您的 C++ 函数中使用 cout
,如果您使用的是 Visual Studio,则如果调用该函数,输出将显示在输出窗口中。尝试将你的 c++ dll 放在你的输出目录中
可能的错误:dll 未找到或将抛出入口点异常。
关于c# - C++ dll 不返回到 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14448836/
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!