我正在开发一个项目,该项目使 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-当我创建对象时,我应该使用新的 CUDADLL dll。我认为我可以做到这一点,因为没有新的我仍然能够访问内部字段。
2-程序应该在admin下运行,否则会发生一些崩溃;
再次感谢各位。