Linux 和 Windows 链接器的区别
不同操作系统上的链接有什么区别?
例如,以下代码在 Windows 上产生链接器错误(使用 Vs2010 和 gcc 编译),但在 Linux(Ubuntu、gcc)上编译成功:
extern int foo
int main() {
foo=1;
}
Gcc 命令:
gcc -shared filename.cpp
What is the difference in linking on various operating system?
For example the following code produces a linker error on Windows (compiled both with Vs2010 and gcc), but compiles successfully on Linux (Ubuntu,gcc):
extern int foo
int main() {
foo=1;
}
Gcc command:
gcc -shared filename.cpp
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您尝试将其编译为 Windows 共享库,则需要类似的内容(从维基百科窃取的代码!):-
Windows 共享模块(DLL)需要 DllMain 入口点(第一次加载模块时执行)并且函数名称需要在它们可以被另一个程序使用之前通过 declspec gobledygook 导出。
If you are trying to compile it as a windows shared library you need something like (code stolen from Wikipedia!) :-
Windows shared modules (DLLs) require a DllMain entry point (executed the first time the module is loaded) and function names need to be exported via the declspec gobledygook before they can be used by another program.