Visual Studio 2010 中 C 代码中的跨项目 C 函数调用中的链接器错误
解决链接器错误“无法解析的外部符号 g_fmt”在 Visual Studio 2010 中从 C 代码调用 C 函数时遇到“问题,以下步骤可能会有所帮助:
1.组织和命名:
确保每个 C 模块都有自己的标头和实现(扩展名 .c)。对文件和宏使用一致的命名约定,例如 G_FMT_H 作为包含保护。
2.头文件修改:
将 header.h 头文件替换为functions.h,其中包含用于导出函数的宏。
<code class="c">#define FUNCTIONS_EXPORT_API __declspec(dllexport) // For DLL export #ifdef __cplusplus extern "C" { #endif FUNCTIONS_EXPORT_API char *dtoa(double, int, int, int*, int*, char**); FUNCTIONS_EXPORT_API char *g_fmt(char*, double); FUNCTIONS_EXPORT_API void freedtoa(char*); #ifdef __cplusplus } #endif</code>
3.实现文件修改:
创建相应的实现文件functions.c,并包含头文件。定义导出的函数和宏。
<code class="c">#include "functions.h" char *dtoa(double, int, int, int*, int*, char**) {} // Define functions char *g_fmt(char*, double) {} void freedtoa(char*) {}</code>
4.导出函数:
在构建 DLL 的项目中定义 FUNCTIONS_EXPORT 宏(或作为 Visual Studio 中的项目设置)以标记要导出的函数。或者,使用 Visual Studio IDE 自动定义的宏:${YOUR_PROJECT_NAME}_EXPORTS。
其他注意事项:
以上是在 Visual Studio 2010 中从 C 调用 C 函数时如何解决'无法解析的外部符号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!