Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyelesaikan Ralat \'Simbol Luaran Tidak Selesai\' Apabila Memanggil Fungsi C daripada C dalam Visual Studio 2010?

Bagaimana untuk Menyelesaikan Ralat \'Simbol Luaran Tidak Selesai\' Apabila Memanggil Fungsi C daripada C dalam Visual Studio 2010?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 09:49:02526semak imbas

How to Resolve

Ralat Pemaut dalam Panggilan Fungsi Cross-Projek C dalam Kod C dalam Visual Studio 2010

Untuk menangani ralat pemaut "simbol luaran yang tidak dapat diselesaikan g_fmt " ditemui semasa memanggil fungsi C daripada kod C dalam Visual Studio 2010, langkah berikut boleh membantu:

1. Organisasi dan Penamaan:

Pastikan setiap modul C mempunyai pengepala dan pelaksanaannya sendiri (sambungan .c). Gunakan konvensyen penamaan yang konsisten untuk fail dan makro, seperti G_FMT_H sebagai pengawal termasuk.

2. Pengubahsuaian Fail Pengepala:

Ganti fail pengepala header.h dengan functions.h, yang termasuk makro untuk mengeksport fungsi.

<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. Pengubahsuaian Fail Pelaksanaan:

Buat fail pelaksanaan yang sepadan, functions.c dan sertakan fail pengepala. Tentukan fungsi dan makro untuk mengeksport.

<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. Fungsi Mengeksport:

Tentukan makro FUNCTIONS_EXPORT dalam projek membina DLL (atau sebagai tetapan projek dalam Visual Studio) untuk menandakan fungsi untuk eksport. Sebagai alternatif, gunakan makro yang ditakrifkan secara automatik oleh Visual Studio IDE: ${YOUR_PROJECT_NAME}_EXPORTS.

Pertimbangan Tambahan:

  • Gunakan yang sama termasuk pengawal dalam pengepala fail dan fail pelaksanaan yang sepadan.
  • Pastikan projek yang memautkan ke DLL mempunyai perpustakaan import yang betul atau merujuk DLL import yang betul.
  • Semak definisi prapemproses dalam Project Properties untuk mengesahkan bahawa eksport makro ditakrifkan dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Simbol Luaran Tidak Selesai\' Apabila Memanggil Fungsi C daripada C dalam Visual Studio 2010?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn