我创建了一个小测试程序来理解 __declspec(dllimport)
和
__declspec(dllexport)
preproc。
在我的解决方案中,我有:
1)文件:produit.h
#pragma once
int facteur = 5;
int __declspec(dllexport) base = 100;
int __declspec(dllexport) produit(int, int);
2)文件:produit.cpp
#include "produit.h"
int produit(int a, int b)
{
return facteur * (a*b);
}
3)文件:produitEx.h
#pragma once
__declspec(dllimport) int base;
__declspec(dllimport) int produit(int a, int b);
4)文件:main.cpp
#include <iostream>
#include "produitEx.h"
using namespace std;
int main()
{
int a =5, b=2, c;
c = base + produit(a, b);
std::cout << c << std::endl;
return 0;
}
看起来很清楚,没有什么特别的,只需导出功能并导入它们。
编译时(使用MinGW)我得到了这两个错误:
.... / main.cpp:8未定义引用`_imp ___ Z7produitii'
.... / main.cpp:8未定义引用`_imp__base'
所以我不知道连接器有什么问题?怎么解决?
谢谢。 (我使用MinGW和NetBeans Cpp)
只需添加:相同的代码在Visual Studio上运行。