gpt4 book ai didi

c# - C++ dll 不返回到 c#

转载 作者:行者123 更新时间:2023-11-28 07:48:05 25 4
gpt4 key购买 nike

我正在从事一个项目,该项目使 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com