Azure WebJob 找不到 DLL
azure webjob can't find dll
我有一个简单的c#控制台应用程序,使用c++ dll,它在我的PC上运行得很好。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
[DllImport("ConsoleApplication2.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mainn();
static void Main(string[] args)
{
int num = mainn();
}
}
}
我压缩了这个控制台应用程序及其dll和所有调试文件,并将其上传到一个连续的webjob,所以它看起来像这样:https://i.stack.imgur.com/lC5p3.png当在azure内部运行时,会发生以下错误:
[07/15/2015 22:10:49 > 223c43: SYS INFO] Run script 'ConsoleApplication1.exe' with script host - 'WindowsScriptHost'
[07/15/2015 22:10:49 > 223c43: SYS INFO] Status changed to Running
[07/15/2015 22:10:49 > 223c43: ERR ]
[07/15/2015 22:10:49 > 223c43: ERR ] Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'ConsoleApplication2.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
[07/15/2015 22:10:49 > 223c43: ERR ] at ConsoleApplication1.Program.mainn()
[07/15/2015 22:10:49 > 223c43: ERR ] at ConsoleApplication1.Program.Main(String[] args) in c:UsersJuan JoseDesktopNAT middlemanConsoleApplication1Program.cs:line 17
[07/15/2015 22:10:49 > 223c43: SYS ERR ] Job failed due to exit code -532462766
[07/15/2015 22:10:49 > 223c43: SYS INFO] Process went down, waiting for 60 seconds
这意味着它找不到ConsoleApplication2.dll,但在图像中你可以看到它就在那里,我怎么解决这个问题?
首先,我会确保您在项目引用中引用您的dll。为此,右键单击解决方案树中的references选项卡,然后单击add reference。然后在browse下找到您的dll并将其签入您的项目。如果它已经被选中,那么你已经引用了你的dll。然后我会检查你的dll并确保它不是只读的。
我将首先尝试将环境设置为当前目录:
Environment.CurrentDirectory
如果这不起作用,我会回到你的app.config中的探测元素。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
裁判:https://msdn.microsoft.com/en-us/library/823z9h8w.aspx
我通过在visual studio中更改此选项来解决此问题:项目属性->C/c++ ->代码生成->运行时库->将此选项更改为多线程(/MT)。重新构建ConsoleApplication2.dll,然后将其传递给azure,它工作了。
相关文章:
- 加载"D:UsersPublicDocumentsopencvbuildx64vc14binopencv_world340d.dll",找不到或打开PDB文件
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 找不到 sdl2.dll
- Qt应用程序找不到第三方DLL并崩溃
- 链接器找不到导入的 DLL 的 LIB 文件
- 由于找不到cpprest_2_10.dll,代码执行无法继续
- 从Windows 10编译VS2017在Windows 7和…上部署..找不到DLL
- 提升 Python 找不到 dll 文件
- Pyinstaller创建的可执行文件找不到Meipass目录中存在的DLL
- 将代码移动到函数中时,DLL "myApp.exe"中找不到序号错误0xC0000138
- 在Visual Studio 2017中使用Qt库的CMake项目:运行exe时找不到Qt dll
- C++ python 中的函数来自使用 ctypes 的.dll - 找不到函数和访问冲突
- ITK:在执行 HelloWorld 示例时找不到 ITKCommon-x.xx.dll
- nvoglv32.dll 找不到或打开 PDB 文件
- C# 无法加载 DLL(找不到模块结果:0x8007007E)
- opencv_core2410.dll - 找不到或打开 PDB 文件
- 无法加载DLL(找不到模块HRESULT:0x8007007E)
- 为什么cudart32_50_35.dll找不到?
- 无法加载DLL.找不到指定的模块.(异常来自HRESULT: 0x8007007E)