起点: 我有一些 C++ 代码链接到第三方静态库,该库链接到 ws2_32.lib。
目标: 我正在研究将此 C++ 代码移植到本质上是 Win32 平台的嵌入式平台的方法,但它不允许任何 dll 并具有专有的 UDP 协议实现。
策略: 我想写一个模仿winsock API的静态库(或者至少是我关心的这个API的一个子集)。这些相关的 winsock 函数将作为嵌入式平台支持的专有 UDP 函数调用的包装器。
假设: 我可以将这个静态库链接到最终的可执行文件而不是 ws2_32.lib。
问题:
- 我的假设是否正确/合理?
- 如何机械地设置链接?
我所做的: 我只尝试在一个功能上这样做,但似乎无法链接。这是我在静态库中定义的:
unsigned short __stdcall htons(unsigned short hostshort) {
return hostshort;
}
当我链接时,我收到以下错误:
: error LNK2001: unresolved external symbol __imp__htons@4
链接消息中的这个__imp__
前缀是我不太明白的。dll 中定义的函数名称是否以某种特殊方式发生变化,我可以在静态库中伪造它以某种方式强制链接器链接到我的函数版本而不是 ws2_32.lib 中的函数吗?
任何帮助表示赞赏。