我希望有人可以帮助我,我主要是 C# 开发人员,所以我的 C 和 C++ 技能很差。我有一个本机 C dll,它是一个更大的应用程序的插件。我使用 gcc 为 linux 上的 windows 交叉编译了这个 dll。
在本机 dll 中,当我创建 D3DSurface 时,我想在混合模式 C++ dll 中调用一个函数,并将指向表面的指针与 Hwnd/句柄一起传递。然后,混合模式 C++ 应该调用我的 C# 托管代码。
举个例子,在 CI 中想要做以下事情;
Hwnd handle;
LPDIRECT3DSURFACE d3dtarg;
SurfaceCreated(handle, d3dtarg);
在 C# 中,我希望从混合模式程序集中调用它
public static class D3DInterop
{
public static void SurfaceCreated(IntPtr handle, IntPtr surface)
{
//do work
}
}
由于我不擅长 C++,我只想知道是否有人可以给我一个示例,说明我需要为混合模式 dll 编写什么代码。我也不想编译带有directx头文件的混合模式dll,那么有没有办法可以将'C' LPDIRECT3DSURFACE 转换为通用指针?在 C# 中我只是使用 IntPtr 。