Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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语言程序中。本机DLL驻留在我的托管DLL包装器中。从那里,我将本机dll(用于调试和发布的nativedell.dll)物理复制到C#console应用程序的调试和发布文件夹中。当我运行C#程序时,它会按预期运行,创建对象并显示值_C#_C++_.net_Dll - Fatal编程技术网

将文件从一个项目复制到另一个项目时出错 < >我在C++中创建了一个*.dll文件,用于C语言程序中。本机DLL驻留在我的托管DLL包装器中。从那里,我将本机dll(用于调试和发布的nativedell.dll)物理复制到C#console应用程序的调试和发布文件夹中。当我运行C#程序时,它会按预期运行,创建对象并显示值

将文件从一个项目复制到另一个项目时出错 < >我在C++中创建了一个*.dll文件,用于C语言程序中。本机DLL驻留在我的托管DLL包装器中。从那里,我将本机dll(用于调试和发布的nativedell.dll)物理复制到C#console应用程序的调试和发布文件夹中。当我运行C#程序时,它会按预期运行,创建对象并显示值,c#,c++,.net,dll,C#,C++,.net,Dll,当我更改本机库(C++)中变量的默认值时,问题就出现了。当我再次运行该程序时,对变量的更改(带有一个框)仍然保留最后一个值。通过搜索,我发现我可以通过以下方式将dll从一个项目复制到我的C#项目中:在项目的生成事件/生成后事件命令行中: copy "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll" "$(SolutionDir)TestDLLConsole\bin\$(Configuration)" 当我再次运

当我更改本机库(C++)中变量的默认值时,问题就出现了。当我再次运行该程序时,对变量的更改(带有一个框)仍然保留最后一个值。通过搜索,我发现我可以通过以下方式将dll从一个项目复制到我的C#项目中:在项目的生成事件/生成后事件命令行中:

copy "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
      "$(SolutionDir)TestDLLConsole\bin\$(Configuration)"
当我再次运行该程序时,会出现一个错误,说明“退出时代码为9009。” 解决此问题的唯一方法是手动重新复制我的nativedell.dll文件,并在每次进行更改时覆盖现有文件

我的解决方案中的4个项目是下一个构建,具体取决于上一个构建:

  • NativeLib(静态库)
  • 纳特维德尔
  • Managedll
  • TestDLLConsole(在这里我测试dll是否工作)

如何将dll复制到/覆盖编译的每个TestDLLConsole?

可能您正试图用上次生成后事件覆盖复制的最后一个dll。您可以尝试:

copy /Y "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
  "$(SolutionDir)TestDLLConsole\bin\$(Configuration)"

/Y参数取消确认是否覆盖现有目标文件的提示

永远不要将dll从一个项目复制到另一个项目。您失去了调试功能,因为dll不再连接到源数据。相反,当从解决方案资源管理器将一个项目添加到另一个项目时:添加现有项,然后浏览到dll所在的位置。@jdweng是的,我理解。我必须先这样做,以确保项目成功。以上所有项目都是在一个解决方案中创建的。我试图实现的是,每次程序重新编译时,这些文件都会被重写。