我正在尝试从vb.net获取DllExport到非托管c工作.
我在Visual Studio 2012上使用Robert Giesecke’s Unmanaged Exports并试图遵循这个very helpful hints.我通过在* .cpp和* .h文件所在的目录中的后期构建操作来复制.Net项目中的dll.
我用dumpbin / EXPORTS Nugget.Discovery.dll检查了我的dll,它告诉我有导出:
File Type: DLL
Section contains the following exports for \Nugget.Discovery.dll
00000000 characteristics
52554A05 time date stamp Wed Oct 09 14:20:21 2013
0.00 version
0 ordinal base
2 number of functions
2 number of names
ordinal hint RVA name
0 0 0000532E StartAnnouncing
1 1 0000533E StopAnnouncing
Summary
2000 .reloc
4000 .rsrc
2000 .sdata
4000 .text
但是,如果我尝试在cpp文件中导入它
#import "Nugget.Discovery.dll"
void StartAnnouncing(int serial);
我尝试编译后收到一个IntelliSense错误和一个错误:
IntelliSense: cannot open source file "Debug/Nugget.Discovery.tlh"
error C1083: Cannot open type library file: 'nugget.discovery.dll': Fehler beim Laden der Typbibliothek/DLL.
知道我做错了什么吗?
最好的祝福!
斯特凡
解决方法:
作为DllExport的一部分,生成.lib文件.您可以使用它来使用普通的C链接器而不是LoadLibrary / GetProcAddress.
从您发布的托管代码开始,在本机端:
extern CALLBACK void StartAnnouncingType(int serial);
extern CALLBACK int TestType(void);
int _tmain(int argc, _TCHAR* argv[])
{
int test = TestPtr();
StartAnnouncingPtr(1);
}
在您的非托管项目的设置中,将Nugget.Discovery.lib添加到项目属性:Configuration Properties-> Linker-> Input.并将Nugget.Discovery.dll复制到输出目录.
标签:dllexport,c,net,unmanaged 来源: https://codeday.me/bug/20190831/1775836.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。