我正在创建要在Windows桌面应用程序中使用的库。该库的核心部分将是一个C / C ++ DLL,可在Win32应用程序或其他基于C / C ++的应用程序中使用。为了方便参考,我将其称为libtest.dll
。我还想将其提供给Windows窗体应用程序(C#),因此我要创建一个C#类库(DLL),作为使用P / invoke(DllImport
)调用C / C ++库的包装器。 C / C ++代码。我将这个库称为Test.dll
。
此外,我在Visual Studio中设置了一个Windows Forms项目来进行测试,该项目取决于C#类库项目。 C#类库取决于C / C ++库项目。但是,要让Test.dll
在libtest.dll
语句中找到DllImport
,libtest.dll
必须与Test.dll
在同一目录中,或者在其中一个目录中。系统中的DLL搜索路径。
为了在Visual Studio中进行调试时轻松实现这一点,我认为将libtest.dll
项目添加为对Test.dll
项目的引用会自动将libtest.dll
复制到{{ 1}}项目。当我添加引用然后构建解决方案时,引用最终会损坏并且Test.dll
文件不会复制到libtest.dll
的输出目录中。
当我将引用添加到Visual Studio中的Test.dll
项目时,引用的属性看起来很好:
Test.dll
True
但是,在构建之后,引用本身上面带有一个警告图标,并且路径现在为空,并且“已解决”为True
。知道为什么,还是要解决此问题?如何在这两个库项目之间设置项目引用,以便将C / C ++ DLL复制到C#类库项目的输出目录中?我已验证两个项目的构建顺序正确:首先False
,然后libtest
。