请高手指点迷津.

feng 2000-07-24 04:10:00
下面程序运行到标号4的时候报错

#include "windows.h"
#include "dsound.h"

typedef HRESULT (*CreateDSound)(LPCGUID ,LPDIRECTSOUND * ,LPUNKNOWN );
HMODULE haspi = NULL;
CreateDSound DSoundCreate = NULL;

HRESULT hr;
LPDIRECTSOUND m_ps_ds;

1. if( hr = CoInitialize(NULL) )
printf("error\n");

2. haspi = LoadLibrary("dsound.dll");
if(haspi == NULL)
printf("error\n");
3. DSoundCreate = (CreateDSound)GetProcAddress(haspi, "DirectSoundCreate");

//extern HRESULT WINAPI DirectSoundCreate(LPCGUID, LPDIRECTSOUND *, LPUNKNOWN);
4. hr = DSoundCreate( NULL, &m_ps_ds, NULL );
if( FAILED( hr ) )
printf("error\n");
错误信息如下
The value of ESP was not properly saved across a function call.
This is usually a result of calling a function declared with one
calling convention with a function pointer declared with a different
calling convention
请高手指点迷津.
...全文
149 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng 2000-09-03
  • 打赏
  • 举报
回复
问题已自己解决。Kevin_qing说的有一些道理。
Kevin_qing 2000-08-25
  • 打赏
  • 举报
回复
是你的DirectSoundCreate的聲明有问题
,另外你为什么用程序加载dll不用自动链接?
extern HRESULT WINAPI DirectSoundCreate(LPGUID, LPDIRECTSOUND *, LPUNKNOWN);
不能少了WINAPI,因为一种是PASCAL方式的call,一种是C方式的。
乱用会造成堆栈错误,使程序运行道不正常的地方。
还有建议在:

3. DSoundCreate = (CreateDSound)GetProcAddress(haspi, "DirectSoundCreate");


这里检查一下DSoundCreate是否为NULL;

zhq2000 2000-07-25
  • 打赏
  • 举报
回复
用这个:
LPDIRECTSOUND lpDSound=NULL;
DirectSoundCreate(lpGuid,&lpDSound,NULL);

lpGuid是通过DirectSoundEnumerate得到!
【软件简介】 VRay Adv 1.5 RC3 渲染器,是一款在 3ds max 上的高级光能传递渲染插件,无任何限制的版本。本 VRay版本支持 3dsmax6~7~8~9 版本。 ------------------------------------------------- VRay Adv 1.5 RC2 Full 高级渲染器简体中文版安装路径及使用说明: 安装路径:\3dsmax 根目录下 [支持 3dsmax6~7~8~9],如:D:\3dsmax7 使用方法: 1.在安装前必须卸载先前安装过的 Vray 英文版或中文版,否则可能会有冲突,切记!切记!切记! 2.开始安装,在选择目标文件夹后,后面会多出一个“\3dsmax8”的路径,删除它。由于本人技术浅薄,不知道如何取消,只好麻烦使用者手动处理了。如有知道如何修正这个问题的高手,烦指点迷津,在下先谢谢了! 3.进入选择需要安装的组件栏中,大家看清后选择需要的组件,再单击[下一步]。因为这里关系到安装 3dsmax 的支持版本。 4.程序在安装中会跳出“V-Ray许可服务器”警告对话框,单击“确定”就是,然后会弹出“许可申书”要求输入许可证,这时,打开“Vray注册机”,再复制“许可申书”中的求码,粘贴到“Vray注册机”的“code”栏内,会在下面自动生成授权码,复制授权码到“许可申书”的“输入提供的许可证”栏内,单击“OK”,再单击“确定”,最后完成安装。 5.启动 3ds max,在主菜单栏内点击“渲染(Rendering)”,选择“渲染(Render)”,弹出面板,单击“公用(Common)”面板,在“指定渲染器(Assign Renderer)”内选择“VRay Adv 1.5 RC3”渲染器,然后单击“渲染器(Renderer)”面板,展开“V-Ray::授权”面板,点击“编辑并设置许可服务器信息”,弹出设置对话框,在“通用设置”内的“许可服务器”栏内填写你的计算机名称,然后“确定”离开。就OK,享用 ^O^! 注:填写你的计算机名称,是为网络渲染服务用,反之,可以不填写。 ------------------------------------------------- 注意:要是安装过其它的版本,有可能会有冲突,如果出现这问题,可以到 3dsmax 的 插件管理器 内把除 V-Ray additional plug-ins 以外的有关 VRay 渲染器文件前面的选勾取消就可以了。 ------------------------------------------------- 在 MAX 中英文版内测试通过,在英文版内,字体会有所变化,但不会有大碍,不会影响使用......
一、启用guest来宾帐户; 二、控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户; 三、我的电脑→工具→文件夹选项→查看→去掉“使用简单文件共享(推荐)”前的勾; 四、设置共享文件夹; 五、控制面板→管理工具→本地安全策略→本地策略→安全选项里,把“网络访问:本地帐户的共享和安全模式”设为“仅来宾-本地用户以来宾的身份验证”(可选,此项设置可去除访问时要求输入密码的对话框,也可视情况设为“经典-本地用户以自己的身份验证”); 六、右击“我的电脑”→“属性”→“计算机名”,该选项卡中有没有出现你的局域网工作组名称,如“work”等。然后单击“网络 ID”按钮,开始“网络标识向导”:单击“下一步”,选择“本机是商业网络的一部分,用它连接到其他工作着的计算机”;单击“下一步”,选择“公司使用没有域的网络”;单击“下一步”按钮,然后输入你的局域网的工作组名,如“work”,再次单击“下一步”按钮,最后单击“完成”按钮完成设置。 访问网上邻居时显示:" windows xp系统访问局域网时显示 "WORKGROUP无法访问.您可能没有权限使用网络资源.与这台服务器的管理员联系以查明您是否有访问权限.此工作组的服务器的列表当前无法使用." 我用的是xp系统 我也遇到过这样的情况,当时也是着急得不轻,后来看到了以下的内容,照着一步步的做了做,真的好了。内容不少,但是仍然希望你能耐住性子,仔细的看看自己属于那种情况,应该会有所收获。 局域网互访 - [ 网络 ] 我也是类似问题。 以前一个局域网10多台机子互访问。安了蕃茄花园v2.3,感觉主题漂亮,桌面壁纸自动换,很爽。访问局域网计算机没问题。可网内其它机子在工作组内能看到我的机子,但打不开。说什么“没有权限”。所有设置都作了如下改动(网上找的),依然无效,何故?但求高手指点。 “网上邻居”无法互访问题解决方法大全 “网上邻居”无法互访的问题实在是太常见了,无论在学校,网吧还是家里多台电脑联机,都有可能遇到网上邻居无法互访的故展。“网上邻居”无法访问的故障多种多样,总结起来基本上有下面的几个: 1,没有共享资源/共享服务未启用。 症状:电脑与电脑间可以Ping通,但无法访问共享资源,在“计算机管理”中查看“本地共享”后会弹出“没有启动服务器服务”的错误对话框。 解决:在控制面板-管理工具-服务中启动Server服务。并设置“启动类型”为“自动”。 2,IP设置有误。 症状:双机之间无法互Ping,连接用的双绞线经过测试没有问题,没有安装防火墙。 解决:检查两台电脑的IP是否处在同一网段,还有子掩码是否相同。 3,WINXP默认设置不正确。 症状:从WIN98/2000/2003上无法访问另一台WINXP的机器。 解决:在“控制面板”中的“用户帐户”启用Guest帐号。然后在运行中输入secpol.msc启动“本地安全策略”。 本地策略 -> 用户权利指派,打开“从网络访问此计算机”,添加Guest帐户 本地策略 -> 安全选项,禁止"帐户:使用空白密码的本地帐户只允许进行控制台登陆"。 另外有时还会遇到另外一种情况:访问XP的时候,登录对话框中的用户名是灰的,始终是Guest用户,不能输入别的用户帐号。 解决:本地策略 -> 安全选项 -> "网络访问:本地帐户的共享和安全模式",修改为"经典-本地用户以自己的身份验证" 4,系统漏洞修补软件修改了安全策略。 症状:在“网上邻居”中可以看到对方的计算机,但是访问共享时却提示“没有权限访问网络” 解决:在开始菜单运行中输入secpol.msc启动“本地安全策略”,本地策略 -> 用户权利分配,打开“拒绝从网络访问这台计算机”,删除guest用户。 5,防火墙规则。 症状:安装了防火墙(包括WINXP系统自带的防火墙),出现无法Ping通,或者是访问共享资源的时候提示"XXX无法访问"、"您可能没有权限使用网络资源"、"与这台服务器的管理员联系以查明您是否有访问权限"、"找不到网络路径"等类似的提示。 解决:停止防火墙或者添加局域网的访问规则。 WINXP自带的防火墙:打开控制面板 -> 网络和Internet连接 -> Windows防火墙 -> 例外,勾选“文件和打印机共享”。 6,Win2000/XP与Win98互访 症状:Ping命令可以通过,但无法在“网上邻居”中实现互访。 解决:在WIN2000/XP系统中:控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组 -> 用户,在Guest帐户上点击鼠标右键,选择属性,在常规项里取消

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧