用C#调用c++的代码(c++代码未知),调用其一个函数,需要为其传递参数,但c++的说明里,这个函数的参数是“READIMAGEKIND_MAIN”和“READIMAGEKIND_THUMBNAIL”这样的,请问我该怎么办?

解决方案 »

  1.   

    表达不清楚,c++函数原型是这样“int ReadImageInfo(long readImageKind)”,然后解释说“readImageKind”的值应该是“READIMAGEKIND_MAIN”和“READIMAGEKIND_THUMBNAIL”其中一个,请问我c#里调用这个函数的时候怎么指定这个“readImageKind”的值呢(测试了不是简单的1或0)?
      

  2.   

    这样你只能问那个给你dll的人,问他这个值代表什么意思吗?
    要不的、谁知道呀?
      

  3.   

    其实我问的主要是如何能知道dll中符号常量的具体值
      

  4.   

    反汇编跟踪看下,2个常量值
    实在不行,编个程序,将long取值的范围内的循环试一下
      

  5.   

    这是程序员自定义的参数 可能是枚举类型 可能是宏定义 也可能就是一long型值 得看他文档(没文档?没源码?只能说那孩子太二了)  靠猜不行 反汇编更没戏 就他这种风格的程序员 你能指望他写程序有多规范么 没准反出来也是一堆波若波萝密心经大法
      

  6.   

    用了dumpbin 工具,只能找到函数名称和全局变量之类的,没有这个符号常量
      

  7.   

    试试这个方法,int ReadImageInfo(long readImageKind),返回值int表示什么意思?如果能根据返回值判断出调用是否成功,循环测试long取值范围的方法我觉得还可行
      

  8.   

    首先您需要知道“READIMAGEKIND_MAIN”和“READIMAGEKIND_THUMBNAIL”这两个参数的数据结构是什么样的,然后在C#里面也构建一个同样的结构,创建该结构的实例作为参数即可
      

  9.   

    READIMAGEKIND_MAIN”和“READIMAGEKIND_THUMBNAIL
    int ReadImageInfo(long readImageKind)”,
    可以肯定的说,long readImageKind是指向结构的指针,结构是READIMAGEKIND_MAIN或者READIMAGEKIND_THUMBNAIL,顾名思义,前者应该是定义图象结构,后者定义图象的缩略图结构,之所以long readImageKind可以指向这两者而不用做转换,是因为这两个结构的定义完全相同,不同的是cx,cy的值(图象长宽),应该是自定义的一个结构,没有头文件,楼主杯具了
      

  10.   

    找找调用这个DLL的代码了,总不会一点例程代码都没有吧