我在C ++中创建了一个* .dll文件,用于C#程序。本机DLL驻留在我的托管DLL包装器中。从那里,我将我的本机DLL(NativeDll.dll用于调试和发布)物理复制到我的C#控制台应用程序的调试和发布文件夹中。当我运行C#程序时,它按预期运行,创建对象并显示值。
当我在本机库(C ++)中更改变量的默认值时出现问题。当我再次运行程序时,对变量(带有框)的更改仍保留最后一个值。从我搜索过的内容中,我发现我可以通过这种方式在项目的Build Events / Post-build事件命令行中将dll从一个项目复制到我的C#项目中:
copy "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
"$(SolutionDir)TestDLLConsole\bin\$(Configuration)"
当我再次运行该程序时,我收到一条错误消息,指出“已退出代码9009。” 解决这个问题的唯一方法是每当我进行更改时手动重新复制NativeDll.dll文件并覆盖现有文件。
我在解决方案中拥有的4个项目是下一个版本,具体取决于之前的版本:
如何在编译每个TestDLLConsole时将Dll复制到/覆盖?
答案 0 :(得分:0)
也许您正在尝试使用上一个帖子构建事件覆盖您复制的最后一个dll。你可以尝试:
copy /Y "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
"$(SolutionDir)TestDLLConsole\bin\$(Configuration)"
/ Y参数禁止提示您确认是否要覆盖现有目标文件。