想在C#中引用vb6写的一个dll文件,如下写了DllImport,但不知道为什么会出现找不到入口的错误。详细如下:
1)My.dll(Vb6的dll)说明:
My.dll中有一个Encrypt.cls,其中有一个方法
Public Function EncryptCode(ByVal str As String, ByVal key As String) As String
    encryptcode = str & key
end function
这个my.dll是成功编译后生成的。2)在C#中声明如下:
引用了System.Runtime.InteropServices;
[DllImport(@"My.dll", EntryPoint = "EncryptCode")]
public static extern string EncryptCode(string m_source, string m_key);调用:
string s = EncryptCode("aaa","bbb");
错误:
调用时报错误:无法在 DLL“My.dll”中找到名为“EncryptCode”的入口点。"这是为什么呢???

解决方案 »

  1.   

    EncryptCode的名字对不上,或者没有被导出
      

  2.   

    用Dependency看一下dll导出的函数名字吧,别乱猜了
    一般VC6会带那个工具的,网上也很多
      

  3.   

    EncryptCode这个名称,我检查过了,在my.dll中这个名称没有错。你说的没被导出是指什么?
      

  4.   

    DllImport是用来导入win32函数的,dll中也得有相应的函数的入口点。没用过vb6做dll,不知道它做的是vb6类库还是win32的
      

  5.   

    而且我在Vs2005中通过“引用”时是可以导入my.dll的。只很奇怪是在当前PC上编译的my.dll在其他PC上再引用时就会出错,说不是Com,而要在其他引用的PC上重新编译这个my.dll后再引用就又可以了。
      

  6.   


    用Depends看dll,或者用UltraEdit看lib文件都能看到EntryPoint的值
      

  7.   

    其依赖库都完整吗?要不发dll给我看看,邮箱:[email protected]