Ralat Penyambung Semasa Memanggil Fungsi C daripada Kod C dalam Projek Visual Studio 2010 Berasingan
Apabila cuba menyepadukan kod C ke dalam projek C dalam Visual Studio 2010, pembangun mungkin menghadapi ralat pemaut. Isu ini timbul apabila memautkan perpustakaan statik atau dinamik. Organisasi kod yang tidak sepadan dan ketidakkonsistenan dalam penamaan fail dan makro selalunya boleh menyebabkan ralat ini.
Organisasi dan Pengisytiharan Fail yang Betul
Dalam C dan C , setiap objek atau modul harus dipisahkan dengan jelas, dengan fail pengepala dan fail kod sumbernya sendiri. Untuk berbilang fungsi C, fail pengepala (cth., functions.h) dan fail kod sumber (cth., functions.c) disyorkan.
Fungsi Mengeksport
Untuk menjadikan fungsi boleh diakses oleh projek lain, mekanisme eksport yang betul harus dilaksanakan. Dalam C, ini boleh dicapai dengan menambah kata kunci extern sebelum pengisytiharan fungsi dalam fail pengepala. Walau bagaimanapun, dalam C , makro "C" luaran harus digunakan. Selain itu, anda mungkin perlu menentukan makro untuk menentukan sama ada kod itu mengeksport atau mengimport fungsi.
Tetapan Pengkompil dan Penyambung
Dalam Visual Studio 2010, tetapan projek tertentu mungkin perlu dikonfigurasikan untuk memastikan penyusunan dan pemautan yang betul. Tetapan ini termasuk definisi prapemproses, yang boleh digunakan untuk mengawal pengembangan makro dan gelagat eksport/import fungsi.
Struktur Kod Disusun Semula
<code class="c">#include <stdio.h> #if defined(_WIN32) # if defined(FUNCTIONS_STATIC) # define FUNCTIONS_EXPORT_API # else # if defined(FUNCTIONS_EXPORTS) # define FUNCTIONS_EXPORT_API __declspec(dllexport) # else # define FUNCTIONS_EXPORT_API __declspec(dllimport) # endif # endif #else # define FUNCTIONS_EXPORT_API #endif #if defined(__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*); #if defined(__cplusplus) } #endif</code>
<code class="c">#define FUNCTIONS_EXPORTS #include "functions.h" char *dtoa(double, int, int, int*, int*, char**) { // Function Implementation } char *g_fmt(char*, double) { // Function Implementation } void freedtoa(char*) { // Function Implementation }</code>
Dengan mengguna pakai garis panduan ini dan memastikan organisasi fail, pengisytiharan fungsi dan mekanisme eksport yang betul, anda boleh menyepadukan kod C ke dalam projek C dalam Visual Studio 2010 dan menyelesaikan ralat pemaut apabila memanggil fungsi C daripada kod C merentas projek yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Mengintegrasikan Kod C ke dalam Projek C dalam Visual Studio 2010 dan Elakkan Ralat Penyambung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!