Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两个DLL中断项目_C++_Visual Studio_Unity3d_Dll_Gsl - Fatal编程技术网

C++ 两个DLL中断项目

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) 当我将所有构建文件

Visual Studio中有一个模拟物理的项目。它使用库中的一些函数。我写了一个C++插件,代码>我的插件。DLL<代码>,调用Unity中的这个项目的函数。它充当一个接口,在这里传递参数并调用项目的函数

最初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#可以加载它的地方。