C++的dll(实际上是ax)文件中定义了N多函数,其中有
1:extern "C" BOOL WINAPI DllEntryPoint(HINSTANCE, ULONG, LPVOID);
2:BOOL APIENTRY DllMain(HANDLE hModule, 
                      DWORD  dwReason, 
                      LPVOID lpReserved)
3:HRESULT Transform(IMediaSample *pSample)
第三个是我想要实现功能的函数,C#中如何调用呢?

解决方案 »

  1.   

    [DllImport("nullip.ax",EntryPoint="Transform")]
    public static extern void Transform我这样调用总是提示 未找到该方法
      

  2.   

    AX是DirectShow Filters的,是不能直接引用的,是一个组件,regsvr32注册进去,然后再activex组件中导进去
      

  3.   

    楼上正解,用DllImport引用.详细信息你可以搜下Platform Invoke,最主要的一点是函数的参数一定要一致(托管到非托管的转换)
      

  4.   


    怎样用activex文件导进去,能再具体些吗
      

  5.   

    regsvr32 aaa.ax
    在VS的工具箱中选择添加,找active,选中刚注册的AX文件,确定,就被添加到工具箱栏,直接拖动就可用
      

  6.   

    active指的是什么啊?.NET组件?还是com组件?
      我都找了,没找到刚注册的ax文件啊,这文件都注册好几次了,都提示注册成功
      

  7.   

     [DllImport("hqpTBfile.dll", EntryPoint = "DecryptStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern string DecryptStr(string strvalue, ref string passkey);
    String passwordkey = "a@bz#3v!";
                String inputstr = "fasdfasd";
                string retStr = DecryptStr(inputstr, ref passwordkey);
                Console.WriteLine(retStr);            Console.ReadLine(); 
    我以前这么写的
      

  8.   

    extern "C" 是DLL暴露出的接口,
    建议你先试试调用Windows API中的接口,然后在去调用其他的,因为网上的C#调用Windows API的代码多,而调用你想调用的接口却可能只有你一个。
      

  9.   

    主要不知道该调用哪个方法
      DllEntryPoint、 DllMain还是 Transform还有就是什么时候用 ref和out啊