指定演员表无效? [英] Specified cast is not valid issue?

查看:80
本文介绍了指定演员表无效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试从测试dll中调用Find()即时消息并且我一直收到错误指定的演员表无效。



这里有一个小片段我正在使用.....



test.dll

foo.h

  __ declspec  dllexport )UINT Find(); 





foo.cpp

 UINT Find()
{
return 1 ;
}





C#test.exe使用界面进行通话

 [ComImport,CoClass( typeof  object )),TypeIdentifier,CompilerGenerated,Guid(  MYGUID)] 
public interface CSmart:ISmart
{
}

[ComImport,TypeIdentifier,CompilerGenerated,Guid( MYGUID)]
public interface ISmart
{
[DispId( 1 )]
uint Find();
}





这里是按钮推送

 < span class =code-keyword> private  CSmart来电; 
.caller =(CSmart)Activator.CreateInstance(Type.GetTypeFromCLSID( new Guid( MYGUID)));
尝试
{
caller.Find(); // < ---这里是错误弹出
} catch (Exception ex)
{
// 指定演员表无效。
}





将dll加载到依赖步行者节目中

<前一个=C> 1 (0x0001)| 0 (0x0000)| unsigned int 查找( void )| 0x00011091





我尝试过:



不知道从哪里开始.... lol

解决方案

导出的函数对我来说看起来不像COM对象。我不是C#的优秀专家,但如果你所拥有的只是一个C函数,你不能在导入后直接调用它:



  class  urgle 
{
[DllImport( < span class =code-string> test.dll)] public static < span class =code-keyword> extern UINT Find();
};





就是你需要的东西。


trying to call Find() from a test dll im messing with and I keep getting the error"Specified cast is not valid."

here's a little snippet of what im working with.....

test.dll
foo.h

__declspec(dllexport) UINT Find();



foo.cpp

UINT Find()
{
	return 1;
}



C# test.exe using interface for the call

[ComImport, CoClass(typeof(object)), TypeIdentifier, CompilerGenerated, Guid("MYGUID")]
    public interface CSmart : ISmart
    {
    }

    [ComImport, TypeIdentifier, CompilerGenerated, Guid("MYGUID")]
    public interface ISmart
    {
        [DispId(1)]
        uint Find();
}



here is the button push

private CSmart caller;
this.caller = (CSmart)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("MYGUID")));
           try
           {
               caller.Find(); //<---here is when the error pops
           }catch (Exception ex)
           {
               //Specified cast is not valid.
           }



Loading the dll into dependancy walker shows

1(0x0001) | 0(0x0000) | unsigned int Find(void) | 0x00011091



What I have tried:

not sure where to start....lol

解决方案

Your exported function doesn't look like a COM object to me. I'm not a great expert on C# but if all you've got is a C function can't you just call it directly after importing it:

class urgle
{
    [DllImport("test.dll")] public static extern UINT Find();
};



is the sort of thing you need.


这篇关于指定演员表无效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆