相关疑难解决方法(0)

在.h文件中使用非常简单的C++函数链接错误

我已经做了两个函数来将一个32/64位指针"转换"成一个双精度型.单独使用时代码工作(只有.h和包含它的.cpp),但在其他地方使用.h(复制到项目目录然后包含)时,会对所有函数抛出"已定义"错误.链接时的h文件.

.h文件的源代码如下:

#pragma once
#ifndef __FLOATCAST_H
#define __FLOATCAST_H

//A quick and dirty way of casting pointers into doubles and back
//Should work with BOTH 64bit and 32bit pointers
union ptr_u {
    double d;
    void* p;
};

double ptr2double(void* pv){
    ptr_u ptr;
    ptr.p = pv;
    return (ptr.d);
};

void* double2ptr(double dv){
    ptr_u ptr;
    ptr.d = dv;
    return(ptr.p);
};

#endif
Run Code Online (Sandbox Code Playgroud)

该链接表示这些函数已经在文件源文件(而不是他的.obj)上定义,该文件不包含此文件.

编辑:为什么我想要一个指针内部双?因为我需要Lua(5.1)来回调一个对象成员函数.

Edit2:Lua提供了一种存储用户数据的方式,它似乎是足够的解决方案,而不是投射指针(见注释)

c++ linker compiler-errors visual-studio

5
推荐指数
1
解决办法
4971
查看次数

标签 统计

c++ ×1

compiler-errors ×1

linker ×1

visual-studio ×1