日期:2014-05-17  浏览次数:20924 次

用C#调用C++DLL,总是提示找不到DLL,请求高手帮助!
今天接到一个软件开发项目,为某公司开发视频会议的软件。该公司提供通讯接口。接口说明中说:接口提供方式以win32标准dll格式进行封装,导出函数为C语言风格。我将所有提供的dll文件放到bin/debug 和 system32文件夹中各一份,建立了接口测试程序
  [DllImport("STMain.dll", EntryPoint = "STInit", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool STInit(IntPtr h1,IntPtr h2,IntPtr h3);
        private void Form1_Load(object sender, EventArgs e)
        {
            bool f = STInit(this.panel1.Handle,this.panel2.Handle,this.panel3.Handle);
        }

但是运行时提示

现在把接口和说明传上来,求高手们给测试下。
还有我的调用方式有问题吗?
高分求助~~~~~~~~
下载地址:http://download.csdn.net/detail/shghe/5765321

------解决方案--------------------
看的引用没问题啊.... 有可能是他们的dll 不支持目前fw2.0以上的版本...     不过只是猜测..
  可以联系厂家 让他们提供一份c#的demo给你参考下
------解决方案--------------------
用regsvr32注册??
------解决方案--------------------
这个dll需要别的dll吗?
------解决方案--------------------
1、
看看是不是需要注册dll
2、用绝对路径加载一下试试

------解决方案--------------------
64位程序调用,会提示格式不正确,说明找到了文件.32位程序调用提示找不到dll,可能是缺少它所调用的dll
------解决方案--------------------
缺少msvcirtd.dll, msvdrtd.dll, ieshims.dll,你找一下吧
------解决方案--------------------
msvcirtd.dll, msvcrtd.dll是VC编译的程序用的dll,好像调试版的才需要。
你可以到网上找找下载或者到装有VC6的系统上找找。
有这两个应该就够了