如何避免重复AfxOleInit??

DwyaneCV 2013-12-07 04:58:11
我用做了个Excel的dll然后在另一个应用程序中调用它,但是我想两次调用它,这样就会出错,因为我把AfxOleInit放在了dll操作类中的构造函数中,这样每次调用dll,都会去AfxOleInit。
所以请教高手,AfxOleInit应该放在哪儿,才能避免重复使用它,或者还有别的什么更好的方法吗?
...全文
160 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd__q 2013-12-08
引用 11 楼 dwyaneyywade 的回复:
引用 9 楼 sd__q 的回复:
[quote=引用 6 楼 dwyaneyywade 的回复:] [quote=引用 5 楼 sd__q 的回复:] [quote=引用 4 楼 dwyaneyywade 的回复:] [quote=引用 3 楼 sd__q 的回复:] [quote=引用 2 楼 dwyaneyywade 的回复:] 我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用[/quote]你的dll是什么样的工程,dll是如何调用的[/quote] 就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。 主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit[/quote]把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。[/quote] 我就是这样做的啊,但是你每次调用该类,不就执行一次构造函数么。[/quote]比如说导出的类是C,创建一个成员变量C *c,在主程序初始化时c = new C(),之后在需要调用函数的地方调用c->Method()不行么
回复
DwyaneCV 2013-12-08
引用 9 楼 sd__q 的回复:
引用 6 楼 dwyaneyywade 的回复:
[quote=引用 5 楼 sd__q 的回复:] [quote=引用 4 楼 dwyaneyywade 的回复:] [quote=引用 3 楼 sd__q 的回复:] [quote=引用 2 楼 dwyaneyywade 的回复:] 我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用[/quote]你的dll是什么样的工程,dll是如何调用的[/quote] 就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。 主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit[/quote]把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。[/quote] 我就是这样做的啊,但是你每次调用该类,不就执行一次构造函数么。
回复
encoderlee 2013-12-07
放到DllMain中,DLL_PROCESS_ATTACH时调用
回复
sd__q 2013-12-07
引用 6 楼 dwyaneyywade 的回复:
引用 5 楼 sd__q 的回复:
[quote=引用 4 楼 dwyaneyywade 的回复:] [quote=引用 3 楼 sd__q 的回复:] [quote=引用 2 楼 dwyaneyywade 的回复:] 我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用[/quote]你的dll是什么样的工程,dll是如何调用的[/quote] 就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。 主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit[/quote]把类导出来,像普通类一样操作,在主程序中建立一个类对象,这样的话类的构造函数就可以只执行一次了。
回复
如果 AfxOleInit 从 MFC DLL 调用,则调用将失败。 该失败,因为该函数,假设,则为; 如果从 DLL 调用,该 OLE 系统由调用应用程序之前初始化。 ================ 摘自msdn
回复
erick08 2013-12-07
同一个dll里, 不可以加个变量记录是否初始化过吗?
回复
DwyaneCV 2013-12-07
引用 5 楼 sd__q 的回复:
引用 4 楼 dwyaneyywade 的回复:
[quote=引用 3 楼 sd__q 的回复:] [quote=引用 2 楼 dwyaneyywade 的回复:] 我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用[/quote]你的dll是什么样的工程,dll是如何调用的[/quote] 就是导入了与EXCEL相关的类,然后封装了一个excel操作类,将AfxOleInit放在操作类的构造函数中,然后在主程序中导入操作类的头文件,并且把dll和头文件以及lib文件拷贝到主程序所在文件夹内,通过静态调用dll。 主要操作是设置两个按钮,一个按钮打开指定excel,一个按钮是将数据写入到另一个excel中,所以第一次随便按下哪个按钮,都可以成功操作,但是再操作另一个按钮就出现错误了,因为第二次按下另一个按钮就会重复了调用了AfxOleInit
回复
sd__q 2013-12-07
引用 4 楼 dwyaneyywade 的回复:
引用 3 楼 sd__q 的回复:
[quote=引用 2 楼 dwyaneyywade 的回复:] 我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用[/quote]你的dll是什么样的工程,dll是如何调用的
回复
DwyaneCV 2013-12-07
引用 3 楼 sd__q 的回复:
引用 2 楼 dwyaneyywade 的回复:
我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
我就是这样做的,封装成函数,多次调用这个函数就会多次调用AfxOleInit,那么就会出错,因为好像AfxOleInit不可以多次调用
回复
sd__q 2013-12-07
引用 2 楼 dwyaneyywade 的回复:
我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
把AfxOleInit()放到构造函数里面,将excel的操作封装成函数,多次调用这个函数不行么
回复
DwyaneCV 2013-12-07
我是做的Excel的dll,但是dll没有CxApp,只有对话框主程序里有,但是放到对话框里,就不能调用excel的dll了。
回复
worldy 2013-12-07
将其放入CxApp的构造函数里
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告