C++ 两个DLL中断项目
Visual Studio中有一个模拟物理的项目。它使用库中的一些函数。我写了一个C++插件,代码>我的插件。DLL<代码>,调用Unity中的这个项目的函数。它充当一个接口,在这里传递参数并调用项目的函数C++ 两个DLL中断项目,c++,visual-studio,unity3d,dll,gsl,C++,Visual Studio,Unity3d,Dll,Gsl,Visual Studio中有一个模拟物理的项目。它使用库中的一些函数。我写了一个C++插件,代码>我的插件。DLL,调用Unity中的这个项目的函数。它充当一个接口,在这里传递参数并调用项目的函数 最初VisualStudio Bug只生成代码> MyPuxLin .DLL< /C> >,C++调用C++函数就行了。可能是因为它调用的函数没有使用gsl函数 在我添加了更多的函数之后,其中一些函数不得不使用gsl中的东西,所以当我生成构建时,又生成了一个文件(gsl.dll) 当我将所有构建文件
最初VisualStudio Bug只生成代码> MyPuxLin .DLL< /C> >,C++调用C++函数就行了。可能是因为它调用的函数没有使用gsl函数
在我添加了更多的函数之后,其中一些函数不得不使用gsl中的东西,所以当我生成构建时,又生成了一个文件(gsl.dll
)
当我将所有构建文件(从x64/Release文件夹)拖动到UnityAssets文件夹并运行我的项目时,它会中断,导致以下错误:
我很确定问题在于需要这个额外的
gsl.dll
。在VisualStudio内部测试时,这些函数可以正常工作,所以我想gsl也可以。如何解决此问题?静态链接在这里不起作用?当我拖动所有生成文件时
能否指定实际复制的文件。错误消息表明在代码或库代码中的某个地方调用了abort()
,这可能是由于缺少或不匹配的.dll造成的,但如果没有更多详细信息,很难猜测是哪一个。我复制了x64/Release文件夹中的所有文件,并将其放入Unity Assets文件夹@布兰登,我正在读关于静态链接的书。我刚刚构建了.dll
,并使用[DllImport(“myplugin.dll,CharSet=CharSet.Unicode)]静态外部void CreateBall(XBall b)调用了Unity代码>。它一直工作到<代码> GSL .dll <代码>,当我按下播放时,它崩溃了。“布兰登”看起来好像是C语言到C++。调试plugin.dll时,您可能有可用的gsl.dll路径。但这并不意味着gsl.dll在加载plugin.dll时可用于C#。因为C#程序有自己的环境。您还应该设置C#环境以使gsl.dll可用。或者你必须把gsl.dll放在一个C#可以加载它的地方。