查看: 893|回复: 3

问一下关于OSG函数库的导出问题

[复制链接]

该用户从未签到

发表于 2012-9-17 09:23:12 | 显示全部楼层 |阅读模式
我想问一下大家,在OSG源代码中,函数库(DLL)中地导出是导入应该是通过OSG_EXPORT宏来完成的吧,而OSG 中的类与API函数都是放在不同的名字空间中的,如osg,osgdb等等,为什么我自己写的程序中的函数却不能导出名字空间中的类与函数呢?下面是我写的一个示例代码:
//testdll.h

#ifndef TESTDLL_H
#define TESTDLL_H

#ifdef TESTDLL_EXPORTS
#define TESTDLL_API __declspec(dllexport)
#else
#define TESTDLL_API __declspec(dllimport)
#endif

namespace TestDll
{
    TESTDLL_API int add(int,int);
    TESTDLL_API int sub(int,int);
};

#endif

//testdll.cpp
#include "testdll.h"

int add(int x,int y)
{
   return x + y;
}

int sub(int x,int y)
{
  return x - y;
}

//test.cpp
#include "testdll.h"

int main(int argc,char *argv[])
{
  printf("20+30= %d\n",add(20,30));
  printf("50-10= %d\n",sub(50,10));
  return 0;
}

//makefile

all: testdll.dll test.exe

testdll.dll:testdll.obj
link -dll -out:testdll.dll testdll.obj

testdll.obj:testdll.cpp
  cl /c /D TESTDLL_EXPORTS testdll.cpp

test.exe:test.obj
  link -out:test.exe test.obj testdll.lib

test.obj:test.cpp
  cl /c test.cpp

.PHONY : clean

clean:
  del testdll.obj testdll.lib testdll.exp testdll.dll test.obj test.exe

但执行nmake的时候,当执行到link -dll -out:testdll.dll testdll.obj 时却没有生成lib文件与exp文件,从而导致 link -out:test.exe test.obj testlib.lib执行失败!这是为什么呀?

该用户从未签到

发表于 2012-9-17 14:49:33 | 显示全部楼层
#define TESTDLL_EXPORTS

该用户从未签到

发表于 2012-9-17 17:53:24 | 显示全部楼层
int add(int x,int y)
{
    return x + y;
}

int sub(int x,int y)
{
   return x - y;
}


这问题 赶紧去google吧

实现也要放到namespace里面的

该用户从未签到

 楼主| 发表于 2012-9-19 16:34:58 | 显示全部楼层
谢谢了,问题解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表