c - 在 Visual Studio 中制作适合 Mozilla 中的 js-ctypes 使用的 C DLL

标签 c visual-studio-2012 dll jsctypes

正如主题所说,我正在尝试做的类似于 this但使用 Visual Studio 2012。

我可以构建和生成 DLL,并且可以在 javascript 中加载该 DLL,但我无法访问该 DLL 中的函数。查看 DllExp 中的 DLL 显示没有函数,表明 DLL 有问题。

DLL 是使用“空项目”模板创建的新 C++ 项目。值得注意的设置是;

常规->配置类型设置为DLL
没有优化。
没有预编译头文件。
编译为 C 代码
调用约定 __cdecl

如果有一个我认为不重要的设置,用于编译和链接的命令行是

 /GS /TC /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd"Debug\vc110.pdb" /fp:precise /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\StreamInterop.pch" 

对于链接器

 /OUT:"C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.dll" /MANIFEST /NXCOMPAT /PDB:"C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /IMPLIB:"C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.lib" /DEBUG /DLL /MACHINE:X86 /INCREMENTAL /PGD:"C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.pgd" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\StreamInterop.dll.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBI

该项目包含单个 C 源文件 main.c,其中包含

 #include<stdio.h>
 int add(int a,int b)
 {
     return(a+b);
 }

鉴于这就是之前帖子中所需要的全部内容,在我看来问题一定出在编译器或链接器开关中。谁能看到我错过了什么?

最佳答案

在使用 Visual Studio 的 Windows 上,要从 DLL 导出函数,请使用:

 #include<stdio.h>
 __declspec(dllexport) int add(int a,int b)
 {
     return(a+b);
 }

附带说明一下,不要选择空项目,这样 Visual Studio 会为您生成一些示例代码。

关于c - 在 Visual Studio 中制作适合 Mozilla 中的 js-ctypes 使用的 C DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221741/

相关文章:

c# - 如何使用动态创建的控件进行自动化测试?

c++ - Qt 应用程序部署不起作用。缺少入口点和 dll

c++ - 使用 std::string 在 DLL 中创建类。 C4251 警告

使用 std::vector 从 dll 调用其他 dll 的 C++

c - 如何检查给定参数是否是另一个给定参数的子字符串

c++ - 字符串操作和奇怪的结果

c - 使用 mingw 对 imp 的 undefined reference

php - 将 PHP 部署到 Azure 网站

c - 我无法构建 HELLO, WORLD 程序?

c - 了解 C 中结构的流程