无法从 c++ 包装器加载 MS 测试中的文件或程序集'log4net'
Could not load file or assembly 'log4net' in MS test from a c++ wrapper
LoggerLibrary.dll 中发生类型为"System.IO.FileNotFoundException"的未处理异常
其他信息:无法加载文件或程序集"log4net,Version=1.1.2.13.0,Culture=neutral,PublicKeyToken=669e0ddf0bb1aa2a"或其依赖项之一。系统找不到指定的文件。
从c++包装器调用的log4Net导致此异常我在测试开始时添加了对log4Net的调用,它很稳定,为什么?DLL还没有加载吗?
好消息是,您可以从log4Net站点上提供的Visual Studio源代码构建.net dllhttps://logging.apache.org/log4net/download_log4net.cgi并选择适合您需求的正确目标框架。
然后,您可以将所需的类公开为COM类,这样C++就可以使用它们。您必须向代码中添加一些接口。
这篇文章给出了一个很好的解释"如何在Visual Studio.NET或Visual Studio 2005中从本机Visual C++代码调用托管DLL"https://support.microsoft.com/en-ca/kb/828736
然后签名你的dll。
sn.exe-k MyKeyFile.SNK
替换AssemblyInfo.cs文件中的以下代码行
[assembly: ComVisible(false)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
具有以下内容。
[assembly: ComVisible(true)]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("..\..\MyKeyFile.SNK")]
按CTRL+SHIFT+B生成要在C++项目中使用的托管DLL。
相关文章:
- 内联程序集printf将整数解释为地址
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 具有外部"c"和程序集的未定义函数
- 用于将C++代码转换为 Web 程序集的脚本未终止
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- 不同于按值传递和常量引用传递的程序集
- 为什么在堆栈和堆上创建变量会产生相同的程序集代码?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在程序集文件内部调用C++函数
- 如何使用g++获取C++头文件(.hpp)的程序集代码
- IHostAssemblyStore::P rovideAssembly - 文件夹程序集的实现
- 使用程序集链接器将资源文件链接到现有.NET程序集
- 在已编译的可执行文件的.text部分中增加或指定间隙,以手动添加程序集代码
- 使用本机DLL从同一文件夹加载程序集
- 生成程序集文件,然后编译成可执行文件
- Silverlight中动态加载的程序集调用DllImprot来锁定文件
- visual studio 2012-仅限C++头文件项目-从不同程序集使用
- 无法从 c++ 包装器加载 MS 测试中的文件或程序集'log4net'
- 将.net程序集编译为给定的目标平台二进制文件