通过Wrapper dll访问webservice中的X64静态库

时间:2014-12-15 09:59:53

标签: c# c++ web-services winapi static-libraries

我有一个静态库X64位。我创建了一个包装器,并通过控制台应用程序执行它工作正常。当我使用相同的包装器DLL并尝试通过webservice公开方法来获取错误。

代码段: 的包装

#include "Header.h"
#include "sonobox.hpp"
namespace MyWin32DLL
{
    MyWin32ClassOne::MyWin32ClassOne()
    {
        varone = 123;
    }

   __declspec(dllexport) int MyWin32ClassOne::getoutput()
        {
                    uikey=GetKey();
        }

        return uikey;
    }

} 

web服务: -

public class WebService1 : System.Web.Services.WebService
    {

        [DllImport("Win32Project2.dll", CharSet = CharSet.Unicode)]
        public static extern int getoutput();

        [WebMethod]
        public int HelloWorld()
        {          
           return getoutput();

        }
    }

错误: - 无法加载文件或程序集' ***'或其中一个依赖项。尝试加载格式不正确的程序。

请你好!

1 个答案:

答案 0 :(得分:0)

此错误的最常见原因是位数不匹配。进程为32位,失败的汇编为64位。或相反亦然。如果是这样,那么您有两种可能的解决方案:

  1. 使用32位版本的静态库构建32位版本的程序集。
  2. 确保Web服务以64位进程执行。