我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。

解决方案 »

  1.   

    把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
      

  2.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用
      

  3.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用你的dll是什么样的工程,dll是如何调用的
      

  4.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用你的dll是什么样的工程,dll是如何调用的就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。
    主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit
      

  5.   

    同一个dll里,  不可以加个变量记录是否初始化过吗?
      

  6.   

    如果 AfxOleInit 从 MFC DLL 调用,则调用将失败。 该失败,因为该函数,假设,则为; 如果从 DLL 调用,该 OLE 系统由调用应用程序之前初始化。
    ================
    摘自msdn
      

  7.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用你的dll是什么样的工程,dll是如何调用的就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。
    主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。
      

  8.   

    放到DllMain中,DLL_PROCESS_ATTACH时调用
      

  9.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用你的dll是什么样的工程,dll是如何调用的就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。
    主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。
    我就是这样做的啊,但是你每次调用该类,不就执行一次构造函数么。
      

  10.   


    我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用你的dll是什么样的工程,dll是如何调用的就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。
    主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。
    我就是这样做的啊,但是你每次调用该类,不就执行一次构造函数么。比如说导出的类是C,创建一个成员变量C *c,在主程序初始化时c = new C(),之后在需要调用函数的地方调用c->Method()不行么