在各种操作系统上链接有什么区别?
例如,以下代码在Windows上生成链接器错误(使用Vs2010和gcc编译),但在Linux上成功编译(Ubuntu,gcc):
extern int foo
int main() {
foo=1;
}
Gcc命令:
gcc -shared filename.cpp
答案 0 :(得分:1)
如果您尝试将其编译为Windows共享库,则需要类似(来自维基百科的代码!): -
#include <windows.h>
// DLL entry function (called on load, unload, ...)
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
// Exported function - adds two numbers
extern "C" __declspec(dllexport) double AddNumbers(double a, double b)
{
return a + b;
}
Windows共享模块(DLL)需要一个DllMain入口点(在第一次加载模块时执行),并且需要通过declspec gobledygook导出函数名称才能被其他程序使用。