首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在msvcr100.dll中使用GetProcAddress找到cosf

无法在msvcr100.dll中使用GetProcAddress找到cosf
EN

Stack Overflow用户
提问于 2012-02-20 10:13:19
回答 1查看 722关注 0票数 0

我正在学习如何在运行时加载DLL文件并从那里调用函数。首先,我决定选择数学cosf函数。经过一些搜索,我了解到所有的数学函数都可以在msvcr100.dll中找到。下面是我写的代码:

代码语言:javascript
复制
#include <stdio.h>
#include <Windows.h>

FARPROC getEntry(HMODULE &m, const char* name) {
    FARPROC p=GetProcAddress(m, name);
    if (!p) {
        printf("Error: Entry %s not found\n", name);
        printf("Error code: %d\n",GetLastError());
        exit(1);
    } else
        printf("Entry %s loaded\n", name);
    return p;
}

int main() {
    HMODULE msvcr = LoadLibraryA("msvcr100.dll");
    if (!msvcr)
        printf("File msvcr100.dll not found\n");
    else
        printf("msvcr100.dll loaded\n");
    FARPROC fun = getEntry(msvcr, "cos");
    FARPROC fun2 = getEntry(msvcr, "cosf");
    FreeLibrary(msvcr);
    return 0;
}

如果运行它,将得到以下输出:

代码语言:javascript
复制
msvcr100.dll loaded
Entry cos loaded
Error: Entry cosf not found
Error code: 127

为什么?

错误代码127表示mangled.

  • Both --指定的过程不能是mangled.

  • Both到Dependency,在MSVCR100.DLL中有一个cosf函数。序号1349,入口点0xC2750。在运行时库函数引用中列出了函数名似乎不是mangled.

  • Both 'cos‘和’cos‘。

我遗漏了什么?如果我应该为cosf使用不同的动态链接库--哪一个是?cos需要双倍的函数,需要一个浮点函数。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-20 11:37:18

来自<math.h>头文件:

代码语言:javascript
复制
inline float cosf(_In_ float _X)
        {return ((float)cos((double)_X)); }

换句话说,它是一个实际使用cos()的内联函数。因此不会从DLL导出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9359421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档