Hỏi về tách file .h và .cpp trong dll c++

xin chào mọi người!
vấn đề của mình như sau ạ:
mình có viết 1 cái auto c# và 1 cái dll c++ để callback các hàm asm trong 1 game

khi mình để tất cả hàm và khai báo trong 1 file cpp thì ko sao nhưng do mình thêm hàm khá nhiều nên cần tách ra nhiều file.

  • 1 file func.h chứa khai báo hàm
  • 1 file var.h chứa biến
  • 1 file main.cpp chứa hàm callback và các hàm inject/… hàm main.
  • 1 file func.cpp chứa định nghĩa hàm được khai báo trong trong func.h

lỗi sãy ra khi mình build. báo các hàm đã sẵn sàng trong main.obj

mình xin mọi tài liệu liên quan hoặc cách giải quyết vấn đề trên ạ. mình ko phải người học lập trình mình làm nông và chỉ tìm trên mạng rồi tự code thôi nên các bạn nếu được giải thích càng chi tiết càng tốt ạ (mình học chủ yếu c# ko phải c++). xin cảm ơn trước các bạn phản hồi.

Vấn đề của bạn là gì ?
Không xuất hiện dll hay thu được dll nhưng khi import vào C# thì báo lỗi ?
Nếu báo lỗi thì là lỗi gì ?
Cấu trúc nội dung trong các file .h và .cpp là như thế nào ?

1 Like

lỗi như này bạn: error LNK2005: “int func_call” (?func_call@@3HA) already defined in athook.obj
file var.h chứa biến cần dùng:
int sl = 0;
file func.h chứa khai báo hàm cần dùng cấu trúc khai báo:
#include var.h
int func_call(int x, int y);
file func.cpp chứa định nghĩa hàm của file func.h:
#include func.h
int func_call(int x, int y){
if (sl != 0)
{code asm}
}
file main.cpp chứa hàm callback:
#include ‘‘func.h’’
func_call(int x, int y);

mình có tham khảo trên trang chủ microsof. họ bảo do 1 biến đc truy cập từ 2 file cpp nhưng ko khai báo extern nhưng mình ko tìm đc cách dùng extern.

hiện tại mình dùng extern theo trang microsoft đã hết báo lỗi và build được, cảm ơn bạn đã quan tâm câu hỏi của mình.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?