求助一个dll导入导出变量的解决办法
以前的项目库都是用的lib的方式,现在需要全部换成dll,但是代码需要最大限度的不变,现在问题来了,考虑使用def文件导 出符号,函数还好,基本不需要变代码就可以实现,但是库中有很多全局变量需要导出,而且都是如下方式写的:
a.c文件
const char*p = “dll”;
a.h文件
extern const char*p;
上述的a.c与a.h是框架代码,不能改。
然后调用的代码文件中包含了a.h文件(程序不光用于windows,还要用于其他平台,所以代码是完全复用的),这样就必须在用p之间显示的是用__declspec(dllimport)才能用,但是编不过去,__declspec(dllimport) const char*p 和头文件中的extern const char*p冲突了。有什么办法可以不使用__declspec(dllimport) const char*p就能使用dll中的p的。
另外,还有一个问题,就是使用dll中的p静态初始化数组,static char* arr[]={p};也不好使,为什么呢,我已经把dll导出的符号lib添加到vs工程的依赖了,应该是有P的地址了啊。唉,static char* arr[]={p};这部分代码也是IDL生成的框架,不能改啊,怎么搞呢,望不惜赐教。。