楼主: 无脑之人

[有事请教] 关于平方根倒数速算法

[复制链接]
梦石
0
星屑
3703
在线时间
3081 小时
注册时间
2011-11-17
回帖
943
发表于 2013-10-28 14:06:16 | 显示全部楼层
本帖最后由 yagami 于 2013-10-28 14:26 编辑
无脑之人 发表于 2013-10-28 12:56
难道是我打开的姿势不对? @yagami


姿势没啥问题 但是ruby好像不认f  我试了下 用f做参数就报错 重写了下函数接受和返回都用int就没问题了 但这样精度太差 所以我觉得 你可以把碰撞的逻辑也写在dll里 这些数学函数就在dll里内部使用 外部就写个碰撞函数   碰撞只要返回0 1就足矣了 这样还能提升效率 调用次数大大减少了
  1. #include <objbase.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int aaa()//内部函数不需要加前缀
  5. {
  6.         return 123;
  7. }

  8. extern "C"__declspec(dllexport)int test()//外部调用 要加extern "C"__declspec(dllexport) 就是表示C++的函数按C风格(涉及函数重载)并声明是外部可以调用的
  9. {
  10.         int a =aaa();
  11.         return a;
  12. }

  13. BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved) //CTRL C CTRL V的东西

  14. {
  15.     HANDLE g_hModule;
  16.     switch(dwReason)
  17.     {
  18.     case DLL_PROCESS_ATTACH:
  19.        g_hModule = (HINSTANCE)hModule;
  20.        break;
  21.     case DLL_PROCESS_DETACH:
  22.        g_hModule=NULL;
  23.        break;
  24.     }
  25.     return true;
  26. }
复制代码
给你套写dll的模板 用vs2010 新建个win32 项目 选择dll 勾选空项目 套用上面的模板  你可以把.h 和.cpp分开写

点评

我回去下个VS看看好了  发表于 2013-10-28 22:14
回复

使用道具 举报

梦石
0
星屑
3703
在线时间
3081 小时
注册时间
2011-11-17
回帖
943
发表于 2013-10-28 14:11:31 | 显示全部楼层
  1. #include <iostream>
  2. #include<Windows.h>
  3. using namespace std;
  4. typedef float(*Dllfun)(float);//注意参数 和返回值类型
  5. int main()
  6. {
  7.         HINSTANCE hdll;  
  8.         hdll=LoadLibrary("C:\\Users\\Administrator\\Desktop\\dlltest\\Debug\\maths.dll");
  9.         Dllfun test;
  10.         test=(Dllfun)GetProcAddress(hdll,"bsqrt");
  11.         cout<<test(9);
  12.         system("pause");
  13. }
复制代码
dll的正确性 你可以在c++里测试下 就用绝对路径好了

点评

调用是没问题。。不知道用什么机制和是否平衡了堆栈。。还是建议写了比较好……  发表于 2013-10-31 20:35
其实无脑之人之前那个LoadLibrary:maths.dll的问题是缺msvcr100d.dll。。。。  发表于 2013-10-31 20:07
RM的Win32API其实是按照__stdcall = WINAPI = CALLBACK = APIENTRY或者随便啥的一个约定。。不写貌似是有隐患的。。除非编译选项加上默认stdcall约定  发表于 2013-10-30 23:21
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
回帖
1577

开拓者

发表于 2013-10-28 17:21:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

梦石
0
星屑
660
在线时间
1286 小时
注册时间
2011-6-14
回帖
3949
发表于 2013-10-28 18:46:06 | 显示全部楼层
干脆写个平方根表(就是让自己的电脑慢一点,来获取正式发布时的快速
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部