Tôi có bảng ICOP VDX-6354 chạy Win CE. Tôi đang cố gắng để kiểm soát buzzer của hội đồng quản trị từ chương trình C# của tôi. Tôi đã thử tất cả các playound vv "coredll.dll" nền tảng gọi. không ai trong số họ làm việc cho đến nay. Vì vậy, cơ hội cuối cùng của tôi là tạo DLL của riêng tôi.Cách tạo DLL sẽ được sử dụng trong C#
unsigned char inp(short addr)
{
unsigned char cValue;
_asm
{
mov dx, addr
in ax, dx
mov cValue, al
}
return cValue;
}
void outp(int addr, unsigned char val)
{
__asm
{
push edx
mov edx, DWORD PTR addr
mov al, BYTE PTR val
out dx, al
pop edx
}
}
bool MyBeep(DWORD dwFreq, DWORD dwDuration)
{
outp(0x43, 0xb6); // Set Buzzer
outp(0x42, (0x1234dc/dwFreq)); // Frequency LSB
outp(0x42, (0x1234dc/dwFreq) >> 8); // Frequency MSB
outp(0x61, inp(0x61) | 0x3); // Start beep
Sleep(dwDuration);
outp(0x61, inp(0x61) & 0xfc); // End beep
return TRUE;
}
Mã trên có sẵn trong bảng dữ liệu của bảng. Tôi muốn biên dịch nó như là một DLL sau đó gọi nó trong chương trình C# của tôi như
[DllImport("Buzzer.dll", EntryPoint = "MyBeep")]
public static extern void MyBeep(uint dwFreq, uint dwDuration);
tôi đã sử dụng một tiền tố như sau khi tôi biên soạn:
extern "C" __declspec(dllexport) bool MyBeep(DWORD dwFreq, DWORD dwDuration)
Vì vậy mà tôi hy vọng sẽ có thể kiểm soát còi. Vấn đề của tôi là tôi không thể thành công trong việc biên dịch nó. Tôi đã làm theo các bước here nhưng nó không giúp tôi.
Tôi nên làm gì từng bước?
CHỈNH SỬA:
Tôi nghĩ rằng tôi đã tạo DLL. Tôi đã thử một cách khác để xây dựng DLL found here.
Bây giờ, tôi đã sao chép tệp DLL vào thư mục Debug của dự án khởi động C# của tôi (Các DLL khác của dự án cũng nằm trong thư mục này). Sau đó, tôi cố gắng để gọi chức năng MyBeep từ MyBeep.DLL trong dự án C# của tôi bằng cách:
[DllImport("MyBeep.dll", EntryPoint = "MyBeep")]
public static extern bool MyBeep(UInt32 dwFreq, UInt32 dwDuration);
Nhưng nó mang lại cho các ngoại lệ sau đây.
Không thể tìm thấy PInvoke DLL 'MyBeep.dll'.
Tôi có thiếu gì đó không? Xin vui lòng kiểm tra các liên kết được đưa ra ở trên mà tôi lừa để xây dựng các DLL để hiểu những gì tôi đã làm cho đến nay. Trân trọng.
Điều gì không thành công? Thông báo lỗi? Bạn đã xây dựng như thế nào? Trong ngắn hạn, chi tiết xin vui lòng. –
+1 có vẻ như là một câu hỏi rất thực tế, không chắc chắn lý do tại sao một người nào đó đã bỏ phiếu để đóng. –
nó không biên dịch thành công. Như tôi đã nói trong câu hỏi của mình, tôi đã làm theo hướng dẫn "cách thực hiện" từng bước. Khi tôi cố gắng biên dịch nó được yêu cầu cho "Phiên thực thi cho phiên gỡ lỗi". Và thực thi duy nhất có sẵn trên dropbox là RegSvr32. Khi tôi chọn RegSvr32 và tiếp tục, nó nói sử dụng: regsrv32 [/ u] [/ s] [/ n] [/ i] vv trên một màn hình cảnh báo riêng biệt và nó không đưa ra bất kỳ lỗi nào trong trình biên dịch. –