遥远的青苹果

代码人生

 

导出C++DLL出现的莫名问题和问题求助

 

2,求各给看客指正或帮我调试一下我的程序

先说结果,C#调用C++导出的组件出现如下异常。

image

而162行的错误,就是new位置的错误,

  image

不知道是不是我导出的方式的问题,是下面几种(我也不确定是不是我导出方法不正确)。

image

 

 

 

回顾我做的主要步骤和问题求助

创建要导出DLL 的C++程序

我程序的过程导出声明过程步骤是,是先创建一个C++的DLL。

具体是在BOOL APIENTRY DllMain文件函数所在的cPP文件中,添加一个实现了一个导出封装业务逻辑的函数。函数名是Porter,函数的实现如下

  image其中int  PowerFlowMain(char ** path )// 主要业务的逻辑。

添加一个def定义文件。 文件内容如下

LIBRARY    "TestPowerFlow"
EXPORTS
Porter @1

 

创建调用DLL的C#程序。

C#的调用过程如下,找到C++生成的dll ,然后添加到引用。

定义如下委托函数,其中CppPorter是调用非托管代码的一个封转,这个城西中最重要的一部分是

image

 

 

 

 

这个委托封装与加载的定义如下!   1: 

    class CppPorter
    {

                [DllImport("kernel32.dll")] 
              private extern static IntPtr LoadLibrary(String path); 
              [DllImport("kernel32.dll")] //读取动态库文件  
              private extern static IntPtr GetProcAddress(IntPtr lib, String funcName); 
              [DllImport("kernel32.dll")] 
              private extern static bool FreeLibrary(IntPtr lib); 
              private IntPtr hLib; 


          public CppPorter(String DLLPath) 
          { 
                hLib = LoadLibrary(DLLPath); 
          }

          public CppPorter()
          {
             
          }


                ~CppPorter() 
              { 
                      FreeLibrary(hLib); 
              }




        
            //将要执行的函数转换为委托 
            public Delegate Invoke(String APIName, Type t)
            {
                IntPtr api = GetProcAddress(hLib, APIName);
                return (Delegate)Marshal.GetDelegateForFunctionPointer(api, t);
            } 





        [DllImport("TestPowerFlow.dll", EntryPoint = "Porter", ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        public static extern int Porter(ref string pp); //声明






        public void PowerFlowMainCSharp()
        {
            string path=@"d:\";

            Porter(ref path); //真实调用


        }

 

 

最后是我要求助广大网友的问题。为什么我调用C++会出现异常image

呢! 这个问题到底是处于哪个环节中的,在导出DLL时有什么细节会出现这种问题!或者是哪位大牛有时间!可以直接联系我 !406020549 直接远程,真诚恳切大家帮忙

posted on 2012-08-03 20:05  遥远的青苹果-李院长  阅读(470)  评论(1编辑  收藏  举报

导航